Python Langchain Pinecone库list_indexes()函数报错问题求助
LangChain Pinecone中list_indexes()函数无法正常工作的问题
我在使用Python的LangChain Pinecone库时,遇到list_indexes()函数无法正常工作的问题,以下是我的代码:
import pinecone from pinecone import Pinecone, ServerlessSpec from langchain.vectorstores import Pinecone as pc1 import os # 初始化Pinecone pc = Pinecone(api_key=os.getenv("PINECONE_API_KEY")) # 创建新的Pinecone索引(已注释) #cloud = os.getenv("PINECONE_ENV_KEY") #region = "us-central1" #spec = ServerlessSpec(cloud=cloud, region=region) #pc.create_index(name="langchain", dimension=1536, metric="cosine", spec=spec) # 指定索引名(假设索引已创建) index_name = "langchain" # OpenAI的text-embedding-ada-002模型使用1536维度,这里使用LangChain的Pinecone库 if index_name not in pc.list_indexes().names(): print("No index") else: db_Pinecone = pc1.from_documents(pdf_chunks, embeddings, index_name=index_name)
运行后出现如下错误:
AttributeError Traceback (most recent call last) Cell In[53], line 22 20 print("No index") 21 else: ---> 22 db_Pinecone = pc1.from_documents(pdf_chunks, embeddings, index_name=index_name) File ~/.local/lib/python3.8/site-packages/langchain/vectorstores/base.py:307, in VectorStore.from_documents(cls, documents, embedding, **kwargs) 305 texts = [d.page_content for d in documents] 306 metadatas = [d.metadata for d in documents] --> 307 return cls.from_texts(texts, embedding, metadatas=metadatas, **kwargs) File ~/.local/lib/python3.8/site-packages/langchain/vectorstores/pinecone.py:206, in Pinecone.from_texts(cls, texts, embedding, metadatas, ids, batch_size, text_key, index_name, namespace, **kwargs) 200 except ImportError: 201 raise ValueError( 202 "Could not import pinecone python package. " 203 "Please install it with `pip install pinecone-client`." 204 ) --> 206 indexes = pinecone.list_indexes() # checks if provided index exists 208 if index_name in indexes: 209 index = pinecone.Index(index_name) File ~/.local/lib/python3.8/site-packages/pinecone/deprecation_warnings.py:51, in list_indexes(*args, **kwargs) 40 def list_indexes(*args, **kwargs): 41 example = """ 42 from pinecone import Pinecone 43 (...) 49 # do something 50 """ ---> 51 raise AttributeError(_build_class_migration_message('list_indexes', example)) AttributeError: list_indexes is no longer a top-level attribute of the pinecone package. To use list_indexes, please create a client instance and call the method there instead. Example: from pinecone import Pinecone pc = Pinecone(api_key='YOUR_API_KEY') index_name = "quickstart" # or your index name if index_name not in pc.list_indexes().names(): # do something
错误提示第206行显示,LangChain Pinecone库中的list_indexes()函数不再是pinecone包的顶级属性(AttributeError)。我想知道这是否意味着pinecone包损坏?另外我在LangChain的GitHub Issues页面找到一个解决方案,修改后的代码如下:
import pinecone from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores import Pinecone from langchain.schema import Document class PineconeConnected(): def __init__(self, index_name: str, pinecone_api_key: str, pinecone_env: str, openai_key: str): embeddings = OpenAIEmbeddings(openai_api_key=openai_key) self.pinecone = pinecone.Pinecone(api_key=pinecone_api_key) self.vector_db = Pinecone.from_existing_index(index_name, embeddings) # 加载包含引用的VectorStore对象和Pinecone索引 def query(query:str, book_title=None): pass
修改说明:将pinecone.init(api_key=pinecone_api_key)替换为self.pinecone = pinecone.Pinecone(api_key=pinecone_api_key),通过创建Pinecone类实例与Pinecone服务交互,同时需要调整其他依赖pinecone.init方法的代码。
现在想咨询两个问题:
- 这个问题的根源是什么?
- 这个解决方案是否有效?
内容的提问来源于stack exchange,提问作者Afrim124
相关产品推荐
相关产品推荐

