
GPT Index ã§ã®TensorflowHubã®åã蟌ã¿ã¢ãã«ã®å©çš
ãGPT Indexãã§ã®TensorflowHubã®åã蟌ã¿ã¢ãã«ã®å©ç𿹿³ããŸãšããŸããã
åå
1. universal-sentence-encoder-multilingual
ãuniversal-sentence-encoder-multilingualãã¯16èšèªã§ãåãæå³ã®èšèãåããã¯ãã«ã«ãªãããã«åŠç¿ããåã蟌ã¿ã¢ãã«ã§ããTensorflowHubã§æäŸãããŠããŸãã
Arabic, Chinese, Chinese (Taiwan), English, French, German, Italian, Japanese, Korean, Dutch, Polish, Portuguese, Spanish, Thai, Turkish, Russian
2. ããã¥ã¡ã³ãã®æºå
ã¯ããã«ããã£ãããããã«æããå°éç¥èãèšè¿°ããããã¥ã¡ã³ããçšæããŸãã
ä»åã¯ã ãã³ã¬ããã£ã¢ã®ããŒã£ã¡ã»ãã»ãã£ãïŒããšãè±èªçWikipediaã®ãSEGAãã®ããã¥ã¡ã³ããçšæããŸããã
ã»bocchi.txt

ã»sega.txt

ãæ³šæãéå»èšäºã§ã¯ãããã©ã«ãã»ãã¬ãŒã¿ã®ã¹ããŒã¹ãæäœæ¥ã§å ¥ããŸããããä»åã¯PromptHelperã§ã»ãã¬ãŒã¿ãã\nãã«ããŠããŸãã
3. Colabã§ã®å®è¡
Google Colabã§ã®å®è¡æé ã¯ã次ã®ãšããã§ãã
(1) ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã
çŸåšããtensorflow-textãã«ã2.8.*ãããªããšãšã©ãŒã«ãªããŸããã
# ããã±ãŒãžã®ã€ã³ã¹ããŒã«
!pip install gpt-index
!pip install "tensorflow-text==2.8.*"(2) ç°å¢å€æ°ã®æºåã
以äžã®ã³ãŒãã® <OpenAI_APIã®ããŒã¯ã³> ã«ã¯OpenAI APIã®ããŒã¯ã³ãæå®ããŸãã(ææ)
import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIã®ããŒã¯ã³>"(3) Colabã«dataãã©ã«ããäœæããŠããã¥ã¡ã³ããé
眮ã
巊端ã®ãã©ã«ãã¢ã€ã³ã³ã§ãã¡ã€ã«äžèЧã衚瀺ããå³ã¯ãªãã¯ãæ°ãããã©ã«ããã§ãã©ã«ããäœæããããã¥ã¡ã³ãããã©ãã°&ããããããŸãã

(4) åã蟌ã¿ã¢ãã«ã®æºåã
TensorflowHubEmbeddingsã䜿ããŸããããã©ã«ãããuniversal-sentence-encoder-multilingualãã«ãªã£ãŠãŸãã
from langchain.embeddings import TensorflowHubEmbeddings
from gpt_index import LangchainEmbedding
# åã蟌ã¿ã¢ãã«ã®æºå
embed_model = LangchainEmbedding(TensorflowHubEmbeddings())(5) ã€ã³ããã¯ã¹ã®çæã
ã»ãã¬ãŒã¿ã¯å€èšèªå¯Ÿå¿ã®ããã\nãã«ããŠããŸãã
from gpt_index import GPTSimpleVectorIndex, SimpleDirectoryReader
from gpt_index.indices.prompt_helper import PromptHelper
# ããã¥ã¡ã³ãã®èªã¿èŸŒã¿
documents = SimpleDirectoryReader('data').load_data()
# ã€ã³ããã¯ã¹ã®çæ
index = GPTSimpleVectorIndex(
documents=documents,
prompt_helper=PromptHelper(
max_input_size=4000, # LLMå
¥åã®æå€§ããŒã¯ã³æ°
num_output=256, # LLMåºåã®ããŒã¯ã³æ°
chunk_size_limit=2000, # ãã£ã³ã¯ã®ããŒã¯ã³æ°
max_chunk_overlap=0, # ãã£ã³ã¯ãªãŒããŒã©ããã®æå€§ããŒã¯ã³æ°
separator="\n" # ã»ãã¬ãŒã¿
),
embed_model=embed_model, # åã蟌ã¿ã¢ãã«
verbose=True
)Token indices sequence length is longer than the specified maximum sequence length for this model (1237 > 1024). Running this sequence through the model will result in indexing errors
> Adding chunk: çµæãã³ã
åŸè€ã²ãšãã¯åéãäœããªãé°ãã£ã§ãã€ãäžäººã§éãããŠããããäžåп代ã«ãã¬ãã®ã€...
> Adding chunk: æªç¢ºèªã©ã€ãªããã«åå ããããã«ã¯ããã¢å¯©æ»ããŠã§ãæç¥šãã©ã€ã審æ»ãééããŠãæçµå¯©æ»ã«åæ Œ...
> Adding chunk: ç§è¯é«æ ¡ã«éã女åãæ¡è²ã®é«ªãç¡é äœã«äŒžã°ãããã€ããžã£ãŒãžã身ã«ã€ããŠãããèªä»å
±ã«èªããåŒ...
> Adding chunk: äžåæ²¢é«æ ¡ã«éã女åãåŸè€ã²ãšããã1åŠå¹Žäžãã©ã€ãã€ãšããŒè²ã®é«ªããµã€ãããŒã«ã«ã»ããããæŽŸ...
> Adding chunk: ç§è¯é«æ ¡ã«éã女åãåŸè€ã²ãšããšã¯ååŠå¹ŽããŠã§ãŒãã®å
¥ã£ãèµ€ã髪ãã»ããã³ã°ã«äŒžã°ããçŸå°å¥³ã§...
> Adding chunk: åŸè€ã²ãšãã®åйã幎霢ã¯5æ³ãå§ãšã¯æ£å察ã®å€©ççæŒ«ïŒãããŸãïŒã§ç¡éªæ°ãªæ§æ ŒãããŠãããæç¬ã®...
> Adding chunk: ç§è¯é«æ ¡ã«éã3幎çã®å¥³åãé²çŽããåŸè€ã²ãšããšã¯ã©ã¹ã¡ãŒããšãªããæç§°ã¯ããã£ã€ãŒããåå€é...
> Adding chunk: åŸè€ã²ãšãã®ç¶èŠªãæ¬åã¯äžæã§ãçŽ é¡ããªããæ¯åæããããŠããªãããã«äžæãè¥ãé ãã®ã¿ãŒã匟...
> Adding chunk: äžåæ²¢ã®ã©ã€ãããŠã¹ãSTARRY(ã¹ã¿ãŒãªãŒ)ãã®åºé·ãåãã女æ§ãèªçæ¥ãè¿ããŠ30æ³ã«ãª...
> Adding chunk: Sega
Sega Corporation[a] is a Japanese multina...
> Adding chunk: Following a downturn in the arcade business sta...
> Adding chunk: Nakayama hired Tom Kalinske as CEO of Sega of A...
> Adding chunk: The Saturn's release in Europe also came before...
> Adding chunk: Despite a 75 percent drop in half-year profits ...
> Adding chunk: Okawa, who had loaned Sega $500 million in 1999...
> Adding chunk: To streamline operations, Sega established oper...
> Adding chunk: After the formation of Sega Group in 2015 and t...
> Adding chunk: In Eurogamer, Damien McFerran wrote that Sega's...
> [build_index_from_documents] Total LLM token usage: 0 tokens
> [build_index_from_documents] Total embedding token usage: 28388 tokens(6) ãŒã£ã¡ã»ãã»ãã£ãã®è³ªå
æ£è§£ã
print(index.query(
"ãŒã£ã¡ã»ãã»ãã£ãã®äœäžã§ãæåç¥ã§äœãèµ·ããïŒ",
verbose=True
))> Top 1 nodes:
> [Node e2052097-829d-4153-a6c3-ec4581cd344f] [Similarity score: 0.279737] çµæãã³ã
åŸè€ã²ãšãã¯åéãäœããªãé°ãã£ã§ãã€ãäžäººã§éãããŠããããäžåп代ã«ãã¬ãã®ã€ã³ã¿ãã¥ãŒãèŠãŠãé°ãã£ã§ããã³ããçµãã§ããã°äººæ°è
ã«ãªãããšèããã®ã¿ãŒã®ç·Žç¿ãå§ãããã²ãšãã¯...
> Searching in chunk: çµæãã³ã
åŸè€ã²ãšãã¯åéãäœããªãé°ãã£ã§ãã€ãäžäººã§éãããŠããããäžåп代ã«ãã¬ãã®ã€...
> Initial response:
åŸè€ã²ãšãã¯æåç¥ã§çµæãã³ãã®ã©ã€ããè¡ãã芳客ãé
äºããŸããããã®ã©ã€ãäžã«æ©æãã©ãã«ãçºçããã²ãšãã¯ãšã£ãã«ããã«ããã¯å¥æ³ã®ã¢ããªããè¡ãã仲éãã¡ã¯ãã®ãã©ããŒã«åããŸããããã®æŒå¥ãã¿ããªããææåéãããã²ãšãã ã£ãããã³ãã¥çã®ã²ãšãã¯ãã®æŽãèå°ã«æ··ä¹±ãã芳客åžã«ãã€ããããšããæŽæã«åºãŠããŸããŸããããã®çµæãçµæãã³ãã®åã¯ããªãŒã©ã€ã¿ãŒã®äœè€
> [query] Total LLM token usage: 2097 tokens
> [query] Total embedding token usage: 37 tokens
åŸè€ã²ãšãã¯æåç¥ã§çµæãã³ãã®ã©ã€ããè¡ãã芳客ãé
äºããŸããããã®ã©ã€ãäžã«æ©æãã©ãã«ãçºçããã²ãšãã¯ãšã£ãã«ããã«ããã¯å¥æ³ã®ã¢ããªããè¡ãã仲éãã¡ã¯ãã®ãã©ããŒã«åããŸããããã®æŒå¥ãã¿ããªããææåéãããã²ãšãã ã£ãããã³ãã¥çã®ã²ãšãã¯ãã®æŽãèå°ã«æ··ä¹±ãã芳客åžã«ãã€ããããšããæŽæã«åºãŠããŸããŸããããã®çµæãçµæãã³ãã®åã¯ããªãŒã©ã€ã¿ãŒã®äœè€(7) SEGAã®è³ªå
æ£è§£ãããããåç
§å
ãè±èªã ãšåçãè±èªã«ãªããã¡ã§ãã
print(index.query(
"ã¡ã¬ãã©ã€ãã®çºå£²æ¥ã¯ïŒ",
verbose=True
))> Top 1 nodes:
> [Node 2bdf54b6-4a2a-4221-b524-eb9831b07d93] [Similarity score: 0.244163] Despite a 75 percent drop in half-year profits just before the Japanese launch of the Dreamcast, ...
> Searching in chunk: Despite a 75 percent drop in half-year profits ...
> Initial response:
The release date of the Sega Mega Drive is October 29, 1988.
> [query] Total LLM token usage: 1675 tokens
> [query] Total embedding token usage: 16 tokens
The release date of the Sega Mega Drive is October 29, 1988.(8) æ¥æ¬èªã§ã®åçãä¿ããŠSEGAã®è³ªå
æ£è§£ããããŠæ¥æ¬èªåçã
print(index.query(
"ã¡ã¬ãã©ã€ãã®çºå£²æ¥ã¯ïŒæ¥æ¬èªã§çããŠ",
verbose=True
))> Top 1 nodes:
> [Node 2bdf54b6-4a2a-4221-b524-eb9831b07d93] [Similarity score: 0.250733] Despite a 75 percent drop in half-year profits just before the Japanese launch of the Dreamcast, ...
> Searching in chunk: Despite a 75 percent drop in half-year profits ...
> Initial response:
ã¡ã¬ãã©ã€ãã¯ã1988幎10æ29æ¥ã«æ¥æ¬ã§çºå£²ãããŸããã
> [query] Total LLM token usage: 1706 tokens
> [query] Total embedding token usage: 28 tokens
ã¡ã¬ãã©ã€ãã¯ã1988幎10æ29æ¥ã«æ¥æ¬ã§çºå£²ãããŸããã