Re:ゼロから始めるML生活

どちらかといえばエミリア派です

LlamaIndexでFaissを使う

この前は、LlamaIndexのプロンプトテンプレートを日本語にしてたりしました。

www.nogawanogawa.com

今回はretrivalの部分をちょっとカスタマイズをしようと思い、デフォルトの検索方法を変えてFaissを使うようにしたいと思います。

Faissの導入

ベクトル検索用の近傍探索ライブラリやツールにも色々あります。 LlamaIndexでもベクトル検索のライブラリやツールをたくさんサポートしているので、今回はその中ですぐに使えそうだったfaissを使うように修正したいと思います。

docs.llamaindex.ai

やり方

やること自体はそんなに難しくなくて、VectorStoreIndexを使うときにstorage_contextをFaissのものに変えてあげるだけです。コードにするとこんな感じですね。

before

vector_index = VectorStoreIndex.from_documents(
    documents,
    service_context=ServiceContext.from_defaults(chunk_size=512)
)

after

vector_store = FaissVectorStore(faiss_index=faiss_index)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
vector_index = VectorStoreIndex.from_documents(
    documents,
    storage_context=storage_context,
    service_context=ServiceContext.from_defaults(chunk_size=512)
)

結構簡単にベクトル検索インデックスの変更ができました。

使用したコード

参考文献

下記を参考にしました。

docs.llamaindex.ai

感想

意外とfaiss使うのも簡単なんですね。ちょっとびっくりしました。

以上、小ネタでした。