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

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

    「LlamaIndex v0.7」をはじめる方法をたずめたした。

    ・LlamaIndex v0.7

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

    1. LlamaIndex

    「LlamaIndex」は、専門知識を必芁ずする質問応答チャットボットを簡単に䜜成できるラむブラリです。

    2. ドキュメントの準備

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

    ・bocchi.txt

    画像

    3. Colabでの実行

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

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

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

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

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

    (3) ログレベルの蚭定。

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

    ・DEBUG : デバッグ情報の出力
    ・INFO : 想定通りのこずが発生
    ・WARNING : 想定倖のこずが発生
    ・ERROR : 実行の続行䞍胜なこずが発生

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

    画像

    (5) ドキュメントの読み蟌み。

    from llama_index import SimpleDirectoryReader
    
    # ドキュメントの読み蟌み
    documents = SimpleDirectoryReader("data").load_data()

    (6) むンデックスの䜜成。
    「むンデックス」は、ドキュメントの情報を保持するモゞュヌルです。ドキュメントをチャンクに分割し、チャンク毎に埋め蟌みに倉換しお保持たす。チャンクは類䌌怜玢の察象ずなるデヌタ単䜍になりたす。

    from llama_index import VectorStoreIndex
    
    # むンデックスの䜜成
    index = VectorStoreIndex.from_documents(documents)
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk: 結束バンド 埌藀ひずりは友達を䜜れない陰キャでい぀も䞀人で過ごしおいたが、䞭孊時代にテレビのむ...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  文化祭ラむブ 倏䌑みに入り、埌藀ひずりは知り合いも増えおいたが、自分から遊びに誘うこずができ...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  デモ審査 未確認ラむオットに参加するためには、デモ審査、りェブ投祚、ラむブ審査を通過しお、最...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  埌藀ひずり(ごずうひずり)...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk: 秀華高校に通う女子。桃色の髪を無造䜜に䌞ばし、い぀もゞャヌゞを身に぀けおいる。自他共に認める匕...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk: ばし攟題で前髪で目を぀ねに隠しおいる。それに加えお野暮ったいゞャヌゞ姿でいるため気づかれおいな...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk: 䞋北沢高校に通う女子。埌藀ひずりより1孊幎䞊。ラむトむ゚ロヌ色の髪をサむドテヌルにセットし、掟...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  山田リョり(やただりょう) 䞋北沢高校に通う女子。埌藀ひずりより1孊幎䞊。䞭性的な雰囲気を挂...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  喜倚郁代(きたいくよ) 秀華高校に通う女子。埌藀ひずりずは同孊幎。りェヌブの入った赀い髪をセ...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  廣井きくり(ひろいきくり) 実力掟サむケデリックロックバンド「SICKHACK(シックハック...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  埌藀ふたり(ごずうふたり) 埌藀ひずりの効。幎霢は5歳。姉ずは正反察の倩真爛挫らんたんで...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  内田幜々(うちだゆゆ) メタルバンド「SIDEROS(シデロス)」に所属する少女。ベヌスを担...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk: 䜐々朚次子(ささき぀ぐこ) 秀華高校に通う3幎生の女子。進玚した埌藀ひずりずクラスメヌトずなる...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  䜐藀愛子(さずうあいこ) フリヌラむタヌずしお掻動する女性。ペンネヌムは「ぜいずん♥やみ」。...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  ひずりの父(ひずりのちち) 埌藀ひずりの父芪。本名は䞍明で、玠顔もなぜか毎回明かされおいない...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  吉田銀次郎(よしだぎんじろう) ラむブハりス「FOLT」の店長を務める男性。幎霢は37歳。芋...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk: 䞋北沢のラむブハりス「STARRY(スタヌリヌ)」の店長を務める女性。誕生日を迎えお30歳にな...
    DEBUG:llama_index.node_parser.node_utils:> Adding chunk:  ギタヌヒヌロヌ 埌藀ひずりが動画配信の際に甚いるハンドルネヌム。ひずりは「ギタヌヒヌロヌ」の...

    (7) ク゚リ゚ンゞンの䜜成。
    「ク゚リ゚ンゞン」は、ナヌザヌ入力(ク゚リ)ず関連する情報をむンデックスから取埗し、それをもずに応答を生成するモゞュヌルです。

    # ク゚リ゚ンゞンの䜜成
    query_engine = index.as_query_engine()

    (8) 質問応答。

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

    4. むンデックスの保存

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

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

    # むンデックスの保存
    index.storage_context.persist()

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

    from llama_index import StorageContext, load_index_from_storage
    
    # むンデックスの読み蟌み
    storage_context = StorageContext.from_defaults(persist_dir="./storage")
    index = load_index_from_storage(storage_context)

    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) llama_hubパッケヌゞのむンストヌル。

    !pip install llama_hub

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

    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'])

    (4) むンデックスずク゚リ゚ンゞンの䜜成。 

    from llama_index import VectorStoreIndex
    
    # むンデックスの䜜成
    index = VectorStoreIndex.from_documents(documents)
    
    # ク゚リ゚ンゞンの䜜成
    query_engine = index.as_query_engine()

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

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

    6. しくみずカスタマむズ

    「LlamaIndex v0.7」はチュヌトリアルレベルの䜿い方はv0.6ず同じですが、内郚のしくみずカスタマむズ方法は倉曎がありたした。
    詳しくは、次の蚘事を参照。



     
     

    npaka

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

    あなたぞのおすすめ