0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LangChainを用いて大量ファイルをロードするVectorDBを作ってみた(6)

Last updated at Posted at 2024-05-25

sky.jpg

はじめに

前回は、Chroma、FAISS、QdrantのVectorDBを用いて、chainlitを適用して生成AIから結果を出してみました。今回はもう少し質問を重ねて、その結果とスコアを確認していきたいと思います。

では、行ってみます。

いろいろ質問してみる

3つのVectorDBを用いて、生成AIに質問を4つ投げてみます。

1問目「組み合わせ処置およびその方法」の特許を申請した会社は?

3つとも、真っ先に「日立製作所」と答えています。
正解は「グラクソスミスクライン、インテレクチュアル、プロパティー、ディベロップメント、リミテッド」
ブブー!!🙅

image.png

2問目「遊技機」というタイトルの特許を出願した会社は?

3つとも、何も考えずに「株式会社ユニバーサルエンターテインメント」。
正解は「株式会社三共」
ブブー!!!🙅🙅

3問目「地下構造物および地下構造物の構築方法」の特許を出願した会社は?

3つとも正解ですが、鹿島建設も含まれるので、QdrantとFAISSがより正しいです。

4問目「株式会社ミツバ」の特許の概要は?

image.png

いずれも間違っています・・・(;´д`)トホホ
Chromaの回答は最悪です。先ほどの質問に引きずられているのでしょうか?本当はパチンコ好きか?(笑)。

というわけで、現段階では使い物にならないという結果になってしまいました。

スコアを確認

では、次にスコアを確認したいと思います。

1問目
Chroma
---------------document.metadata---------------
{'name': '0007353890', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353801\\0007353881\\0007353890\\0007353890.xml'}
0.2812548279762268
---------------document.metadata---------------
{'name': '0007354085', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\0007354081\\0007354085\\0007354085.xml'}
0.2917313277721405
---------------document.metadata---------------
{'name': '0007354359', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354301\\0007354351\\0007354359\\0007354359.xml'}
0.2962445020675659
Qdrant
---------------document.metadata---------------
{'name': '0007353890', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353801\\0007353881\\0007353890\\0007353890.xml', '_id': '5237eba7fea34e858248d38a8914a21b', '_collection_name': 'manga_data'}
0.8593926166776151
---------------document.metadata---------------
{'name': '0007354085', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\0007354081\\0007354085\\0007354085.xml', '_id': '23dfce8ce7c143b9a693724d16d037ee', '_collection_name': 'manga_data'}
0.8541343519082232
---------------document.metadata---------------
{'name': '0007354359', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354301\\0007354351\\0007354359\\0007354359.xml', '_id': 'b112d1a5c3ca4557aa7a3ce9206fafdf', '_collection_name': 'manga_data'}
0.8518777313964644
FAISS
---------------document.metadata---------------
{'name': '0007353890', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353801\\0007353881\\0007353890\\0007353890.xml'}
0.28125483
---------------document.metadata---------------
{'name': '0007354085', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\0007354081\\0007354085\\0007354085.xml'}
0.2917313
---------------document.metadata---------------
{'name': '0007354359', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354301\\0007354351\\0007354359\\0007354359.xml'}
0.29624453

similarity_search_with_scoreの引数はk=3なので、1回のリクエストに対して3つの文章を取得します。FAISSを例に挙げるとスコアはそれぞれ0.28125483 0.2917313 0.29624453です。
3つのVectorDBを比較するとQdrantのスコアは0.8以上で高そうです。ただ間違ってますが。
他は0.3くらいですね。

2問目
Chroma
{'name': '0007354038', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\00007354031\\0007354038\\0007354038.xml'}
0.24904297292232513
---------------document.metadata---------------
{'name': '0007353658', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353651\\0007353658\\0007353658.xml'}
0.2504054605960846
---------------document.metadata---------------
{'name': '0007353679', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353671\\0007353679\\0007353679.xml'}
0.25191378593444824
Qdrant
{'name': '0007354038', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\0007354031\\0007354038\\0007354038.xml', '_id': '1f7c475156f94bb1b9488aa96ff3c924', '_collection_name': 'manga_data'}
0.8754785101083004
---------------document.metadata---------------
{'name': '0007353658', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353651\\0007353658\\0007353658.xml', '_id': '865211e1873545cb911e483e3c2ad616', '_collection_name': 'manga_data'}
0.8747972500841864
---------------document.metadata---------------
{'name': '0007353679', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353671\\0007353679\\0007353679.xml', '_id': 'eb684b75efdb4bab8032e2f61289f964', '_collection_name': 'manga_data'}
0.8740430907051734
FAISS
{'name': '0007354038', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\0007354031\\0007354038\\0007354038.xml'}
0.24904296
---------------document.metadata---------------
{'name': '0007353658', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353651\\0007353658\\0007353658.xml'}
0.2504055
---------------document.metadata---------------
{'name': '0007353679', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353671\\0007353679\\0007353679.xml'}
0.25191385

これも、Qdrantはアホみたいにスコアが高いですね。
その他2つはスコアが低いです。

3問目
Chroma
---------------document.metadata---------------
{'name': '0007354018', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\00007354011\\0007354018\\0007354018.xml'}
0.24291792511940002
---------------document.metadata---------------
{'name': '0007353574', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353501\\0007353571\\0007353574\\0007353574.xml'}
0.2998692989349365
---------------document.metadata---------------
{'name': '0007353745', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353701\\0007353741\\0007353745\\0007353745.xml'}
0.3072134256362915
Qdrant
{'name': '0007354018', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\0007354011\\0007354018\\0007354018.xml', '_id': '77942319596842948e79b54d7210ab33', '_collection_name': 'manga_data'}
0.8785410448120645
---------------document.metadata---------------
{'name': '0007353574', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353501\\0007353571\\0007353574\\0007353574.xml', '_id': 'ee52cc55593f44abaa7b0333871732f3', '_collection_name': 'manga_data'}
0.8500652876336717
---------------document.metadata---------------
{'name': '0007354151', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354101\\0007354151\\0007354151\\0007354151.xml', '_id': '91db9a21959e4e48a91f5b4a329fbe34', '_collection_name': 'manga_data'}
0.849666061061804
FAISS
{'name': '0007354018', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354001\\0007354011\\0007354018\\0007354018.xml'}
0.2429179
---------------document.metadata---------------
{'name': '0007353574', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353501\\0007353571\\0007353574\\0007353574.xml'}
0.29986942
---------------document.metadata---------------
{'name': '0007354151', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007354101\\0007354151\\0007354151\\0007354151.xml'}
0.30066788

これもQdrantのスコアはぶっちぎりです(;´д`)トホホ。

4問目
Chroma
{'name': '0007353637', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0 0007353631\\0007353637\\0007353637.xml'}
0.3015143871307373
---------------document.metadata---------------
{'name': '0007353633', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353631\\0007353633\\0007353633.xml'}
0.3088327646255493
---------------document.metadata---------------
{'name': '0007353635', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353631\\0007353635\\0007353635.xml'}
0.3088327646255493
Qdrant
{'name': '0007353890', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353801\\0007353881\\0007353890\\0007353890.xml', '_id': '5237eba7fea34e858248d38a8914a21b', '_collection_name': 'manga_data'}
0.8514235452387626
---------------document.metadata---------------
{'name': '0007353637', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353631\\0007353637\\0007353637.xml', '_id': '13da9984b56d4da987a3aef88feb01d9', '_collection_name': 'manga_data'}
0.84924282872426
---------------document.metadata---------------
{'name': '0007353883', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353801\\0007353881\\0007353883\\0007353883.xml', '_id': '64fb3613f8c845d2a0ff73566fb08b12', '_collection_name': 'manga_data'}
0.8467399453540712
FAISS
---------------document.metadata---------------
{'name': '0007353890', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353801\\0007353881\\0007353890\\0007353890.xml'}
0.29721403
---------------document.metadata---------------
{'name': '0007353637', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353601\\0007353631\\0007353637\\0007353637.xml'}
0.3015144
---------------document.metadata---------------
{'name': '0007353883', 'source': 'C:\\Users\\ogiki\\langchain_book\\JPB_2023185\\DOCUMENT\\P_B1\\0007353801\\0007353881\\0007353883\\0007353883.xml'}
0.30652013

結果から

うーん、Qdrantは自信満々のスコアで間違ってるし、ChromaとFAISSはいつも0.3くらいで守り控えめだし・・・
評価が難しいです。
ただ、言えることは、3つのVectorDB共に、だいたい間違っているという事でしょうか。

まとめ

単純にテキストをVectorDBに突っ込んだだけでは、商用では全く使い物にならないことがわかりました。
次回は別の方法を試してみようと思います。
今回の大量ファイルのうちXML形式のものを対象として、XMLパースを実施し、必要な部分だけを取り出す方法を検討してみます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?