PineconeApiAttributeError: ScoredVector has no attribute というエラーが出る

2024/11/09に公開

こんにちは投資ロウトです。

背景

今まではopenaiとpineconeのライブラリのみを使用して、pineconeにインデックスの作成及びデータの登録を行っていました。しかしデータを検索するLangChainのPineconeの処理で下記のエラーが発生しました。

PineconeApiAttributeError: ScoredVector has no attribute 'metadata' at ['['received_data', 'matches', 0]']['metadata']

状況から

ググっても類似する事象が出てくるも、誰も解決策が出ていない状態でした。しかし以下をするとコサイン類似度で検索ができるようになりました。

①過去のインデックスは使用せずに、新しくインデックスを登録する。

pc.create_index(
 name=index_name,
 dimension=1536,
 metric="cosine",
 spec=ServerlessSpec(cloud="aws", region="us-east-1"),
)

②以下のようにmetaデータを入れて登録する

from langchain_core.documents import Document

document_1 = Document(page_content="foo", metadata={"baz": "bar"})
document_2 = Document(page_content="thud", metadata={"bar": "baz"})
document_3 = Document(page_content="i will be deleted :(")

documents = [document_1, document_2, document_3]
ids = ["1", "2", "3"]
vector_store.add_documents(documents=documents, ids=ids)

③検索を実施する

results = vector_store.similarity_search(query="thud",k=1)

検索ができるようになる。

これをする前にライブラリの変更などによる破壊的な変更かと思い、過去の様々なバージョンまで戻ってライブラリ調整をするも、エラーが改善されなかったので、登録方法の違うインデックスの作り方などであれば、同じエラーが起きるのではないかと思います。

なので、上記のようにインデックスを作り直した場合であれば、上手くいくという結論となりました。

過去に作成したindexはメタデータはありませんが、

新しくメタデータを投入した方法ではメタデータがありました。

※こちらはPineconeの中身です。

Discussion