Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

212P 8.7章 ベクトル化時エラー発生 #21

Open
mizuking01 opened this issue Apr 30, 2024 · 2 comments
Open

212P 8.7章 ベクトル化時エラー発生 #21

mizuking01 opened this issue Apr 30, 2024 · 2 comments

Comments

@mizuking01
Copy link

エラーの説明

212P 9番「PDFファイルのテキスト分割とベクトル化」の実行時にエラーが発生しました

スクリーンショット

スクリーンショット 2024-04-30 181024

書籍の内容以外で実施したこと
pineconeのAPIキーとインデックス名、環境名は何度も確認したので間違いはないと思います。
新しくAPIキーを作成も試しましたが駄目でした。
ライブラリのバージョンも確認しましたが同じでした。
環境

AWS Cloud9

その他

エラーの解決のため、その他ご自身で試したことや、確認したログなどがあれば記載してください。

@os1ma
Copy link
Collaborator

os1ma commented Apr 30, 2024

ご質問ありがとうございます。

私のほうで改めて確認したところ、Pineconeのアップデートにより、特定の条件下でそのエラーが発生することが分かりました。

結論としては、以下のどちらかで対応してください。

  • (対応方法1)Pineconeの管理画面からIndexを削除して、書籍p213に掲載しているスクリプトでIndexを作成
    • 該当のスクリプトは こちら からも確認できます。
  • (対応方法2)このリポジトリの「langchain-v0.1」ブランチのソースコードを使用
    • この場合、openaiやlangchainなどの各種パッケージも、対応するバージョンをインストールし直す必要があります。
    • 「langchain-v0.1」ブランチのソースコードについて、詳細は こちら を参照してください。

エラーの原因

ここから、エラーの原因や上記の対応方法で解決する理由をまとめます。
まずはエラーの原因についてです。

Pineconeでは、最近のアップデートにより、Index作成時に「Capacity mode」として「Serverless」と「Pods」が選択できるようになりました。

スクリーンショット 2024-04-30 19 02 35

Pineconeの管理画面上では、無料プランでは「Serverless」のみが選択できるようになっており、おそらく「Serverless」のIndexを作成されたのだと思います。

書籍に掲載しているソースコード(このリポジトリのmainブランチのソースコード)では、以下のように「environment」と「index_name」を指定してPineconeのIndexにアクセスしています。

pinecone.init(
api_key=os.environ["PINECONE_API_KEY"],
environment=os.environ["PINECONE_ENV"],
)
index_name = os.environ["PINECONE_INDEX"]

「Serverless」のIndexには「environment」は存在しないため、「environment」を指定すると以下のようにIndexが見つからないというエラーになります。

ValueError: No active indexes found in your Pinecone project, are you sure you're using the right Pinecone API key and Environment? Please double check your Pinecone dashboard.

つまり、「書籍に掲載しているソースコード(このリポジトリのmainブランチのソースコード)」の場合、PineconeのIndexは「Pods」を選択する必要がある、ということになります。

または、他の方法として、PineconeのIndexが「Serverless」の場合に対応したソースコードを使用することでも解決できる、ということになります。

Note

langchainなどのパッケージのバージョン次第かもしれませんが、environment=None と指定しても、内部でデフォルトの「environment」が指定されて同様のエラーになる場合があります。

(対応方法1)Pineconeの管理画面からIndexを削除して、書籍p213に掲載しているスクリプトでIndexを作成

Pineconeの無料プランの場合、管理画面上からは「Pods」を選択できなくなっていますが、APIからは「Pods」を選択できるようです。
そこで、書籍p213に掲載しているスクリプトを使用して「Pods」のIndexを作成すると、書籍の通りadd_document.pyも動作します。

該当のスクリプトは こちら からも確認できます。

(対応方法2)このリポジトリの「langchain-v0.1」ブランチのソースコードを使用

別の解決策として、PineconeのIndexが「Serverless」の場合に対応したソースコードを使用する方法もあります。

このリポジトリの「langchain-v0.1」ブランチのソースコードは、PineconeのIndexが「Serverless」の場合に対応しています。

ただし、「langchain-v0.1」ブランチのソースコードを使う際は、openaiやlangchainなどの各種パッケージも、対応するバージョンをインストールし直す必要があるので、ご注意ください。

「langchain-v0.1」ブランチのソースコードについて、詳細は こちら を参照してください。

よろしくお願いします。

@os1ma
Copy link
Collaborator

os1ma commented Apr 30, 2024

こちらのエラーについて、他にも遭遇する方がいそうなため、リポジトリのREADMEにこのIssueへのリンクを追加しました。

b30653b

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants