メむンコンテンツぞスキップ
芋出し画像

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日に日本で発売されたした。



     
     

    npaka

     
     
    プログラマヌ。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガゞェット。幎2冊ペヌスで技術曞を執筆。アニ゜ン / カラオケ / ギタヌ / 猫 twitter : @npaka123

    あなたぞのおすすめ