
LlamaIndex ã®ãã€ããªããæ€çŽ¢ã詊ã
ãLlamaIndexãã®ããã€ããªããæ€çŽ¢ãã詊ããã®ã§ããŸãšããŸããã
1. ãã€ããªããæ€çŽ¢
æ å ±æ€çŽ¢ã§ã¯ãææžå šäœã察象ã«ãããç² (Sparse) ãªæ€çŽ¢ããšãç¹å®ã®ããŒã¯ãŒãã«çŠç¹ãåœãŠããå¯ (Dense) ãªæ€çŽ¢ãã®2ã€ã®ææ³ããããŸããç²ãªæ€çŽ¢ã¯åºãç¯å²ã®æ å ±ãã«ããŒããããšãã§ããŸãããå¿ èŠãªæ å ±ãèŠã€ãã«ããããšããããŸããäžæ¹ãå¯ãªæ€çŽ¢ã¯ãããŒã¯ãŒãã«é¢é£ããæ å ±ãéç¹çã«åéããããšãã§ããŸãããæ å ±ãäžååã§ããããšããããŸãã
ç²ãšå¯ã®ããã€ããªãããæ€çŽ¢ã§ã¯ãäž¡æ¹ã®ææ³ãçµã¿åãããããšã§ãåºç¯å²ãã€éç¹çã«æ€çŽ¢ãè¡ãããšãã§ããŸãã

2. Colabã§ã®å®è¡
Google Colabã§ã®å®è¡æé ã¯ã次ã®ãšããã§ãã
(1) æ°èŠã®Colabã®ããŒãããã¯ãéãã
(2) ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã
ãã€ããªããæ€çŽ¢ã«ã¯ãPineconeããå¿
èŠãªã®ã§ããpinecone-clientããšãtransformersããã€ã³ã¹ããŒã«ããŸãã
# ããã±ãŒãžã®ã€ã³ã¹ããŒã«
!pip install llama-index==0.5.12
!pip install pinecone-client
!pip install transformers(3) ç°å¢å€æ°ã®æºåã
以äžã®ã³ãŒãã® <OpenAI_APIã®ããŒã¯ã³> ã«ã¯OpenAI APIã®ããŒã¯ã³ãæå®ããŸãã(ææ)
import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIã®ããŒã¯ã³>"(4) ãã°ã¬ãã«ã®èšå®ã
import logging
import sys
# ãã°ã¬ãã«ã®èšå®
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, force=True)(5) ããã¥ã¡ã³ãã®èªã¿èŸŒã¿ã
ä»åã¯ãBeautifulSoupã®ããŒã¿ã³ãã¯ã¿ã§ãããŒã£ã¡ã»ãã»ãã£ããã®WikipediaããŒãžãèªã¿èŸŒã¿ãŸãã
from llama_index import download_loader
# ããã¥ã¡ã³ãã®èªã¿èŸŒã¿
BeautifulSoupWebReader = download_loader("BeautifulSoupWebReader")
loader = BeautifulSoupWebReader()
documents = loader.load_data(urls=["https://ja.wikipedia.org/wiki/ãŒã£ã¡ã»ãã»ãã£ã!"])(6) Pineconeã®ã€ã³ããã¯ã¹ã®æºåã
以äžã®ã³ãŒãã® <Pineconeã®APIããŒ> ã«ã¯Pineconeã®APIããŒãæå®ããŸãã(ç¡æ)
import pinecone
# Pineconeã®ã€ã³ããã¯ã¹ã®æºå
api_key = "<Pineconeã®APIããŒ>"
pinecone.init(api_key=api_key, environment="us-west1-gcp")
pinecone.create_index("quickstart", dimension=1536, metric="dotproduct", pod_type="p1")
pinecone_index = pinecone.Index("quickstart")ãPineconeãã®äœ¿ãæ¹ã«ã€ããŠã¯ã以äžã§ç޹ä»ããŠããŸãã
(7) ã€ã³ããã¯ã¹ã®çæã
GPTPineconeIndex.from_documents()ã§äœæããŸããadd_sparse_vector=Trueãæå®ãããšããã€ããªããæ€çŽ¢ã§ããããã«ãªããŸãã
from llama_index import GPTPineconeIndex
# ã€ã³ããã¯ã¹ã®çæ
index = GPTPineconeIndex.from_documents(
documents,
pinecone_index=pinecone_index,
add_sparse_vector=True,
)(8) ãã€ããªããæ€çŽ¢ãªãã§è³ªåå¿çã
# ã€ã³ããã¯ã¹ãžã®è³ªåå¿ç
print(index.query("ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ïŒ"))> Initial prompt template: Context information is below.
---------------------
:
ã®ã¿ãŒããŒããŒ
ã²ãšããåç»æçš¿ãµã€ãã§æŽ»åããéã«çšãããã³ãã«ããŒã ãã²ãšããæ®æ®µäººåã«åºããªããå
é¢ã«æ±ããŠããæ¿èªæ¬²æ±ã®è±¡åŸŽãšãèšãããã®ã§ãçŸå®ã®ã²ãšãããã¯ããé¢ããããã¹ã±éšãšãŒã¹ã®åœŒæ°æã¡ãããã©ã€ã³ã®åéæ°ã¯1000人è¶
ãããšãã£ãèšå®ãã€ããããŠãã[泚 11][38]ãé¡ãé ãã¢ã³ã°ã«ããæ®åœ±ããã人æ°ãã³ãã®ã«ããŒåç»ãæçš¿ããŠãããæçš¿ãµã€ãã§ã®ç»é²è
æ°ã¯8äžäººè¿ã[39]ããœãããâ¡ãã¿ã®ãããªé³æ¥œé¢ä¿è
ãããæ³šç®ãéããŠãããåç»ã¯çŽæš¹ã«ãã£ãŠåçåãããŠãããæåç¥ã©ã€ãã§å£ããã®ã¿ãŒãæ°èª¿ããè²»çšçã«å
ãŠããã[40]ã
ã©ã€ãã§ã®çŸåšã®èªèº«ã®å®åã§ã¯ã®ã¿ãŒããŒããŒã®ååã§ãã¡ã³ãéããŠãæºè¶³ãããã ãã®æŒå¥ãã§ããªããšããã²ãšãã®èããããæ£äœããçµæãã³ãã®åŸè€ã²ãšããã§ããããšã¯å
¬ã«ã¯ãããŠããªã[泚 12]ã
:
---------------------
Given the context information and not prior knowledge, answer the question: ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ïŒ
> Initial response:
ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ã®ã¿ãŒã§ããã®ã¿ãŒããŒããŒã®æ å ±ãå«ãŸãããã£ã³ã¯ãååŸããŠãæ£è§£ãå°ãåºããŸããã
(9) ãã€ããªããæ€çŽ¢ããã§è³ªåå¿çã
ãã€ããªããæ€çŽ¢ããã«ã¯ãvector_store_query_mode="hybrid"ãæå®ããŸãã
# ã€ã³ããã¯ã¹ãžã®è³ªåå¿ç
print(index.query("ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ïŒ", vector_store_query_mode="hybrid"))> Initial prompt template: Context information is below.
---------------------
:
ã®ã¿ãŒããŒããŒ
ã²ãšããåç»æçš¿ãµã€ãã§æŽ»åããéã«çšãããã³ãã«ããŒã ãã²ãšããæ®æ®µäººåã«åºããªããå
é¢ã«æ±ããŠããæ¿èªæ¬²æ±ã®è±¡åŸŽãšãèšãããã®ã§ãçŸå®ã®ã²ãšãããã¯ããé¢ããããã¹ã±éšãšãŒã¹ã®åœŒæ°æã¡ãããã©ã€ã³ã®åéæ°ã¯1000人è¶
ãããšãã£ãèšå®ãã€ããããŠãã[泚 11][38]ãé¡ãé ãã¢ã³ã°ã«ããæ®åœ±ããã人æ°ãã³ãã®ã«ããŒåç»ãæçš¿ããŠãããæçš¿ãµã€ãã§ã®ç»é²è
æ°ã¯8äžäººè¿ã[39]ããœãããâ¡ãã¿ã®ãããªé³æ¥œé¢ä¿è
ãããæ³šç®ãéããŠãããåç»ã¯çŽæš¹ã«ãã£ãŠåçåãããŠãããæåç¥ã©ã€ãã§å£ããã®ã¿ãŒãæ°èª¿ããè²»çšçã«å
ãŠããã[40]ã
ã©ã€ãã§ã®çŸåšã®èªèº«ã®å®åã§ã¯ã®ã¿ãŒããŒããŒã®ååã§ãã¡ã³ãéããŠãæºè¶³ãããã ãã®æŒå¥ãã§ããªããšããã²ãšãã®èããããæ£äœããçµæãã³ãã®åŸè€ã²ãšããã§ããããšã¯å
¬ã«ã¯ãããŠããªã[泚 12]ã
:
---------------------
Given the context information and not prior knowledge, answer the question: ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ïŒ
> Initial response:
ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ã®ã¿ãŒã§ãã
> Refined prompt template: The original question is as follows: ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ïŒ
We have provided an existing answer:
ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ã®ã¿ãŒã§ãã
We have the opportunity to refine the existing answer (only if needed) with some more context below.
------------
ã¢ã«ãïŒããšã ã¢ã«ãïŒãã®ååã§ããŒãã£ã«YouTuberãšããŠæŽ»åããŠãããã²ãŒã 宿³åç»ãªã©ãå
¬éããŠãã[71]ãå
·äœçãªååã«ã€ããŠã¯äœäžã§èšåããããäž»ã«ãPAããããšåŒã°ãã[泚 21]ã
倧山 ç«ã
ïŒããã㟠ããïŒ
äœäž2幎ç®ããç»å Žã16æ³ã§ç§è¯é«æ ¡1幎ç[72]ã倧åŠåéšæºåã«å
¥ã£ãŠå¿ãããªã£ãè¹å€ã®ä»£ãããšããŠ2幎ç®ç§ããSTARRYã§ã¢ã«ãã€ãããããã«ãªãã
ã¹ããŒã奜ãã§äžåп代ã¯ãã¹ã±éšæå±ã ã£ãããšãããé°å²æ°ã¯äœè²äŒç³»ãã®ãã®ã§ããã€ãã¯ãã¯ããšããŠå£°ã倧ãããã²ãšããšãªã§ãŠã¯ãã®ããªãèŠæã«ããŠããã
身é·ãäœãããšããã£ãŠãã¹ã±ã§ã¯ããŸã掻èºã§ããªãã£ããšãããããã¯ãã§ã¹ã§ã®ã²ãšããèŠãŠæ§ãããã³ããå§ããããšèã[72]ãè¹å€ãšåå€ã«ä»ãåã£ãŠããã£ãŠã®ã¿ãŒã賌å
¥ã以åŸã¯åŠæ ¡ã§ããã€ãå
ã§ããã²ãšãã«ã®ã¿ãŒãæããŠãããããšãŸãšããã€ã[32]ã
æ¥å æµæå¥ïŒã²ãªã
------------
Given the new context, refine the original answer to better answer the question. If the context isn't useful, return the original answer.
> Refined response:
ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ã®ã¿ãŒã§ãããã¯ããã¯ãã§ã¹ã§ã®ã²ãšããèŠãŠæ§ãããã³ããå§ããããšèããããšããå§ãŸããŸãããã®ã¿ãŒããŒããŒã®æ å ±ãå«ãŸãããã£ã³ã¯ãååŸããŠæ£è§£ãå°ãåºããŸããããæ¬¡ã®ãªãã¡ã€ã³æã«ãå¥ãã£ã©ã®æ å ±ããŸãã£ãŠèª€ã£ãæ å ±ã«ãªã£ãŠããŸããŸããã
Playgroundã§ç¢ºèªãããšãããGPT-3.5ã§ã¯æ å ±ãŸãããGPT-4ã§ã¯æ å ±ãŸãããæ£è§£ããŸããã

