
GPT Index ã§ã®HuggingFaceã®åã蟌ã¿ã¢ãã«ã®å©çš
ãGPT Indexãã§ã®HuggingFaceã®åã蟌ã¿ã¢ãã«ã®å©ç𿹿³ããŸãšããŸããã
åå
1. sbert-jsnli-luke-japanese-base-lite
ãGPT Indexãã®ããã©ã«ãã®åã蟌ã¿ã¢ãã«ã¯ãtext-embedding-ada-002ãã§ããããã¯ææãªã®ã§ãç¡æã®HuggingFaceã®åã蟌ã¿ã¢ãã«ã«åãæ¿ããããšæããŸãã
oshizoãããåã蟌ã¿ã¢ãã«ãå ¬éããŠãããã®ã§ãããã䜿ãããŠããããŸããã
ãã£ãluke-japanese-base-liteãJSNLIã§æåã蟌ã¿çšã«èšç·ŽããŠãŸããŠãè©äŸ¡çµæãçµæ§ããã£ãã®ã§HUBã«äžããŠãããŸããã
â oshizo (@_oshizo_) January 10, 2023
èšç·Žã«äœ¿ã£ãnotebookããã»ãŒsentence-transformersã®exampleéãã§ããå ¬éããŠãŸããhttps://t.co/lziqgfuiez
2. ããã¥ã¡ã³ãã®æºå
ã¯ããã«ããã£ãããããã«æããå°éç¥èãèšè¿°ããããã¥ã¡ã³ããçšæããŸãã
ä»åã¯ããã³ã¬ããã£ã¢ã®ããŒã£ã¡ã»ãã»ãã£ãïŒãã®ããããã®ããã¥ã¡ã³ããçšæããŸããã
ã»bocchi.txt

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

(4) åã蟌ã¿ã¢ãã«ã®æºåã
from langchain.embeddings import HuggingFaceEmbeddings
from gpt_index import LangchainEmbedding
# åã蟌ã¿ã¢ãã«ã®æºå
embed_model = LangchainEmbedding(HuggingFaceEmbeddings(
model_name="oshizo/sbert-jsnli-luke-japanese-base-lite"
))(5) ã€ã³ããã¯ã¹ã®çæã
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="ã" # ã»ãã¬ãŒã¿
),
embed_model=embed_model, # åã蟌ã¿ã¢ãã«
verbose=True
)> Adding chunk: çµæãã³ã
åŸè€ã²ãšãã¯åéãäœããªãé°ãã£ã§ãã€ãäžäººã§éãããŠããããäžåп代ã«ãã¬ãã®ã€...
> Adding chunk: ã²ãããè
ãªãšãšã³ã¯ãçµæãã³ããã©ã€ãã«èŠããªãããã圌女ãã¡ã«ã¢ããã€ã¹ãéãããã¡ã³ãã¡...
> Adding chunk: å§ã®äŒå°ç¥ææã®åœ±é¿ã§ããã³ã掻åã«ãããããããã«ãªãããçµæãã³ãããçµæããããã³ãã§ã¯...
> Adding chunk: å±±ç°ãªã§ãŠãæ
ã£ãŠããã圌女ã«è¿ã¥ãããã®ã¿ãŒã匟ãããšãŠãœãã€ããŠãçµæãã³ãã«å å
¥ãããã...
> Adding chunk: æ¥æ¬ã®ã¢ãã¡ã挫ç»ã倧奜ãã§ããã³ãããã«åå ããããã«3幎åã«æ¥æ¥ãã鳿¥œæŽ»åãå§ãããã®ã¿...
> Adding chunk: åäžå¿ã¯æºçã§ãããããåªåããŠçŸåšã®å°äœã«ãŸã§äžãè©°ããããæªã ã«ã©ã€ãåã¯ç·åŒµããŠç ããªã...
> Adding chunk: æ åå¶äœã®å匷ãããŠãããããçµæãã³ããMVãå¶äœããéã«äŒå°ç¥è¹å€ããäŸé Œããã1å·ãšå
±ã«...
> Adding chunk: ã²ãšãã¯å®çãã³ãŽãŒä»®é¢ããªãå Žåã¯ããŽãç®±ããã©ã³ã¯ã代çšåãšããŠãã¶ã£ãŠã²ããããããšãã...
> [build_index_from_documents] Total LLM token usage: 0 tokens
> [build_index_from_documents] Total embedding token usage: 14600 tokens8åã®ãã£ã³ã¯ã«åå²ãããããšãããããŸãã
(6) 質åå¿çã®å®éšïŒ
æåã®ããããã®æç« ãæœåºããŠåçãæ£è§£ã
print(index.query(
"ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ïŒ",
verbose=True
))> Top 1 nodes:
> [Node 12c27073-5129-4217-bba3-c26c52a63206] çµæãã³ã
åŸè€ã²ãšãã¯åéãäœããªãé°ãã£ã§ãã€ãäžäººã§éãããŠããããäžåп代ã«ãã¬ãã®ã€ã³ã¿ãã¥ãŒãèŠãŠãé°ãã£ã§ããã³ããçµãã§ããã°äººæ°è
ã«ãªãããšèããã®ã¿ãŒã®ç·Žç¿ãå§ãããã²ãšãã¯...
> Searching in chunk: çµæãã³ã
åŸè€ã²ãšãã¯åéãäœããªãé°ãã£ã§ãã€ãäžäººã§éãããŠããããäžåп代ã«ãã¬ãã®ã€...
> Initial response:
åŸè€ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ã®ã¿ãŒã§ããäžåп代ã«ãã¬ãã®ã€ã³ã¿ãã¥ãŒãèŠãŠãé°ãã£ã§ããã³ããçµãã§ããã°äººæ°è
ã«ãªãããšèããã®ã¿ãŒã®ç·Žç¿ãå§ãããšããããšãããã®ã¿ãŒãåŸæãªæ¥œåšã§ããããšãããããŸãã
> [query] Total LLM token usage: 2173 tokens
> [query] Total embedding token usage: 25 tokens
åŸè€ã²ãšãã¡ããã®åŸæãªæ¥œåšã¯ã®ã¿ãŒã§ããäžåп代ã«ãã¬ãã®ã€ã³ã¿ãã¥ãŒãèŠãŠãé°ãã£ã§ããã³ããçµãã§ããã°äººæ°è
ã«ãªãããšèããã®ã¿ãŒã®ç·Žç¿ãå§ãããšããããšãããã®ã¿ãŒãåŸæãªæ¥œåšã§ããããšãããããŸãã(7) 質åå¿çã®å®éšïŒ
ãã²ãããè
ãªãšãšã³ïŒãã¯æªãã¿ãŸããããåããã£ã³ã¯å
ã«ã²ãšãã¡ããã®ãããã£ãŒã«ããããŸãããæ£è§£ã
print(index.query(
"æåç¥ã§äœãèµ·ããïŒ",
verbose=True
)) Top 1 nodes:
> [Node 167b5518-9cc0-4809-9913-d9847abffe76] ã²ãããè
ãªãšãšã³ã¯ãçµæãã³ããã©ã€ãã«èŠããªãããã圌女ãã¡ã«ã¢ããã€ã¹ãéãããã¡ã³ãã¡ã®å©ãããã£ãŠMVã宿ãããããã¢å¯©æ»ã®çµæãåºãã®ãåŸ
ã€ã°ãããšãªããæ°ããªæ¥ãè¿ãããã²ãšãã...
> Searching in chunk: ã²ãããè
ãªãšãšã³ã¯ãçµæãã³ããã©ã€ãã«èŠããªãããã圌女ãã¡ã«ã¢ããã€ã¹ãéãããã¡ã³ãã¡...
> Initial response:
æåç¥ã§ãçµæãã³ãã¯æ©æãã©ãã«ãšããã¢ã¯ã·ãã³ãã«èŠèãããªããããã¢ããªãã§ããã«ããã¯å¥æ³ãè¡ããã©ã€ããæåã«å°ãããåŸè€ã²ãšãã¯ãæåç¥ã§ç¶èŠªããåããã®ã¿ãŒãå£ããŠããŸã£ãã
> [query] Total LLM token usage: 2195 tokens
> [query] Total embedding token usage: 19 tokens
æåç¥ã§ãçµæãã³ãã¯æ©æãã©ãã«ãšããã¢ã¯ã·ãã³ãã«èŠèãããªããããã¢ããªãã§ããã«ããã¯å¥æ³ãè¡ããã©ã€ããæåã«å°ãããåŸè€ã²ãšãã¯ãæåç¥ã§ç¶èŠªããåããã®ã¿ãŒãå£ããŠããŸã£ãã(8) 質åå¿çã®å®éšïŒ
ãå±±ç°ãªã§ãŠãæ
ã£ãŠâŠãã¯æªãã¿ãŸããããåããã£ã³ã¯å
ã«ãããããã®ãããã£ãŒã«ããããŸãããæ£è§£ã
print(index.query(
"ããŒã¹ã®ããŸã人ã¯ïŒ",
verbose=True
))> Top 1 nodes:
> [Node c2a3b54e-d007-4c09-9682-5a974115ec7e] å±±ç°ãªã§ãŠãæ
ã£ãŠããã圌女ã«è¿ã¥ãããã®ã¿ãŒã匟ãããšãŠãœãã€ããŠãçµæãã³ãã«å å
¥ãããããããåå£å Žã§æããªã£ãŠéãåºããŠããããã®ãŸãŸé³ä¿¡äžéã«ãªã£ãŠãããã²ãšããã®ã¿ãŒã匟ããŠããå§¿ã...
> Searching in chunk: å±±ç°ãªã§ãŠãæ
ã£ãŠããã圌女ã«è¿ã¥ãããã®ã¿ãŒã匟ãããšãŠãœãã€ããŠãçµæãã³ãã«å å
¥ãããã...
> Initial response:
ããŒã¹ãããŸã匟ãã人ã¯å»£äºãããã§ãã
> [query] Total LLM token usage: 2081 tokens
> [query] Total embedding token usage: 12 tokens
ããŒã¹ãããŸã匟ãã人ã¯å»£äºãããã§ãã4. ã€ã³ããã¯ã¹ã®ä¿å
çŸç¶ç (0.2.7) ã§ã¯ãã€ã³ããã¯ã¹ä¿åã§ãšã©ãŒãçºçããŸããã
å¯Ÿå¿æ¹æ³ã¯ä»¥äžã®èšäºãåèã«ãªããŸãã