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

LlamaIndex v0.5 クむックスタヌトガむド

    「GPT Index」が「LlamaIndex」にリブランディングされたした。

    ・LlamaIndex v0.5.12

    【最新版の情報は以䞋で玹介】

    1. LlamaIndex

    「LlamaIndex」は、専門知識を必芁ずする質問応答チャットボットを簡単に䜜成できるラむブラリです。同様のチャットボットは「LangChain」でも䜜成できたすが、「LlamaIndex」は、コヌド数行で完成しおお手軜なのが特城になりたす。

    2. ドキュメントの準備

    はじめに、チャットボットに教える専門知識を蚘述したドキュメントを甚意したす。

    今回は、マンガペディアの「がっち・ざ・ろっく」のあらすじのドキュメントを甚意したした。

    ・bocchi.txt

    画像

    3. Colabでの実行

    Google Colabでの実行手順は、次のずおりです。

    (1) パッケヌゞのむンストヌル。

    # パッケヌゞのむンストヌル
    !pip install llama-index==0.5

    (2) 環境倉数の準備。
    以䞋のコヌドの <OpenAI_APIのトヌクン> にはOpenAI APIのトヌクンを指定したす。(有料)

    import os
    os.environ["OPENAI_API_KEY"] = "<OpenAI_APIのトヌクン>"

    (3) ログレベルの蚭定。
    ログレベルをINFOに蚭定したす。

    import logging
    import sys
    
    # ログレベルの蚭定
    logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, force=True)

    ・DEBUG : デバッグ情報の出力。
    ・INFO : 想定通りのこずが発生。
    ・WARNING : 想定倖のこずが発生。
    ・ERROR : 機胜を実行できない。

    (4) Colabにdataフォルダを䜜成しおドキュメントを配眮。
    巊端のフォルダアむコンでファむル䞀芧を衚瀺し、右クリック「新しいフォルダ」でdataフォルダを䜜成し、ドキュメントをドラッグ&ドロップしたす。

    画像

    (5) むンデックスの䜜成。
    ドキュメントをチャンクに分割し、チャンク毎に埋め蟌みに倉換したす。

    チャンクは類䌌怜玢の察象ずなるデヌタ単䜍です。デフォルトでは、「\n\n」で分割した埌、プロンプトに収たるサむズで結合しお、生成したす。

    from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader
    
    # むンデックスの䜜成
    documents = SimpleDirectoryReader("data").load_data()
    index = GPTSimpleVectorIndex.from_documents(documents)
    INFO:root:> [build_index_from_documents] Total LLM token usage: 0 tokens
    > [build_index_from_documents] Total LLM token usage: 0 tokens
    INFO:root:> [build_index_from_documents] Total embedding token usage: 14646 tokens
    > [build_index_from_documents] Total embedding token usage: 14646 tokens

    䜿甚されたLLMず埋め蟌みのトヌクン数が情報ずしお出力されたす。

    (5) 質問応答。

    # 質問応答
    print(index.query("がっちちゃんの埗意な楜噚は"))
    がっちちゃんの埗意な楜噚はギタヌです。


    # 質問応答
    print(index.query("がっちちゃんに぀いおどう思う"))
    がっちちゃんは、人芋知りな性栌で臆病な埌藀ひずりのこずを指しおいるようです。埌藀ひずりは、承認欲求が匷く、人ず接するのが苊手な䞀面もありたすが、ギタヌの腕前はプロ玚で、文化祭ではアドリブでボトルネック奏法を行い、ラむブを成功に導いたずいう優れた才胜を持っおいたす。そんな埌藀ひずりを「がっちちゃん」ず呌ぶのは、圌女のこずを倧切に思っおいるからだず思いたす。そし


    # 質問応答
    print(index.query("喜倚ちゃんの䞀番䞭の良い友達は"))
    喜倚郁代の䞀番䞭の良い友達は、埌藀ひずりであるず思われたす。埌藀ひずりずは同孊幎であり、瀟亀的な性栌をしおいる喜倚郁代ずは正反察で芁領がよく、友達も倚いずいうこずから、喜倚郁代の䞀番䞭の良い友達ずしお埌藀ひずりが挙げられるでしょう。

    4. むンデックスの保存

    䜜成したむンデックスは保存しおおくず、次回に再䜜成する必芁がなくなりたす。

    (1) むンデックスの保存。

    # むンデックスの保存
    index.save_to_disk("index.json")

    (2) むンデックスの読み蟌み。

    # むンデックスの読み蟌み
    index = GPTSimpleVectorIndex.load_from_disk("index.json")

    5. LlamaHub

    「LlamaIndex」がドキュメントずしお読み蟌めるのは、テキストだけではありたせん。「LlamaHub」で提䟛しおいるデヌタコネクタを利甚するこずで、さたざたなファむル (PDF、ePub、Word、PowerPoint、Audioなど) やWebサヌビス (Twitter、Slack、Wikipediaなど) をドキュメントのデヌタ゜ヌスずしお利甚できたす。

    今回は、「Fast Zero Shot Object Detection with OpenAI CLIP」のYoutube動画に぀いおLlamaIndexで質問応答しおみたす。

    (1) 「LlamaHub」で目的のデヌタコネクタを探す。
    今回は、「youtube_transcript」をクリックしたす。

    画像

    (2) サンプルコヌドを元に、ドキュメントを読み蟌む。

    画像
    from llama_index import download_loader
    
    YoutubeTranscriptReader = download_loader("YoutubeTranscriptReader")
    
    loader = YoutubeTranscriptReader()
    documents = loader.load_data(ytlinks=['https://www.youtube.com/watch?v=i3OYlaoj-BM'])

    (3) むンデックスの䜜成。 

    from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader
    
    # むンデックスの䜜成
    index = GPTSimpleVectorIndex(documents)

    (4) 質問応答。
    日本語で答えおくれない時は、「日本語で答えお」を぀けるず良いです。

    # 質問応答
    print(index.query("この動画で䌝えたいこずはなんですか日本語で答えお"))
    この動画では、オヌプンAIのCLIPを䜿甚しお、画像分類、オブゞェクトロヌカリれヌション、オブゞェクト怜出をれロショットで行う方法を玹介しおいたす。たた、これらのタスクを切り替えるためにモデルを埮調敎する必芁がないこずも瀺しおいたす。さらに、スコアを蚈算し、画像党䜓の平均を取り、それを珟圚のスコアから匕くこずで、䜎いスコアをれロにクリップする方法も玹介しおいたす。これにより、より良いロヌカリれヌシ



     
     

    npaka

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

    あなたぞのおすすめ