You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从pinecone库导入Client类的技术问题求助

Pinecone Client导入失败的解决方法

你当前使用的是Pinecone SDK 7.3.0版本,这个版本的API已做重大更新,不再存在Client类,这是报错的核心原因。以下是具体修复步骤:

1. 替换客户端初始化逻辑

旧版本(2.x及以下)的Client类已被替换为Pinecone类,修改导入和初始化代码:

# 替换原有的pinecone导入逻辑
from pinecone import Pinecone

# 初始化客户端
pinecone_api_key = os.getenv("PINECONE_API_KEY")
pinecone_environment = "us-east-1"
pc = Pinecone(api_key=pinecone_api_key, environment=pinecone_environment)

2. 调整索引操作代码

所有涉及客户端的索引操作改用新的Pinecone实例:

index_name = "gentlecat"

# 检查索引是否存在,不存在则创建
if index_name not in [idx.name for idx in pc.list_indexes()]:
    pc.create_index(name=index_name, dimension=384, metric="cosine")

# 连接目标索引
index = pc.Index(index_name)

3. 适配LangChain向量存储创建

LangChain的Pinecone.from_documents方法需适配新SDK,可选择两种方式:

  • 直接传入API密钥和环境信息:
    vectorstore = Pinecone.from_documents(
        docs, 
        embeddings, 
        index_name=index_name, 
        pinecone_api_key=pinecone_api_key,
        pinecone_environment=pinecone_environment
    )
    
  • 传入已初始化的Pinecone实例:
    vectorstore = Pinecone.from_documents(
        docs, 
        embeddings, 
        index_name=index_name, 
        client=pc
    )
    

完整修复后的代码

import os
from langchain_community.document_loaders import TextLoader
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import Pinecone
from langchain_community.llms import HuggingFaceHub
from langchain_core.prompts import PromptTemplate
from langchain.chains import RetrievalQA
from dotenv import load_dotenv 
from langchain_text_splitters import CharacterTextSplitter

# 加载环境变量
load_dotenv()

# 初始化Pinecone客户端(新版本SDK)
from pinecone import Pinecone
pinecone_api_key = os.getenv("PINECONE_API_KEY")
pinecone_environment = "us-east-1"
pc = Pinecone(api_key=pinecone_api_key, environment=pinecone_environment)

index_name = "gentlecat"

# 检查并创建索引
if index_name not in [idx.name for idx in pc.list_indexes()]:
    pc.create_index(name=index_name, dimension=384, metric="cosine")

# 连接索引
index = pc.Index(index_name)

# 加载并分割文档
loader = TextLoader(r"filepath", encoding="utf-8")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=4)
docs = text_splitter.split_documents(documents)

# 设置嵌入模型
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") 

# 创建向量存储
vectorstore = Pinecone.from_documents(docs, embeddings, index_name=index_name, client=pc)

# 设置LLM
llm = HuggingFaceHub(
    repo_id="mistralai/Mixtral-8x7B-Instruct-v0.1",
    model_kwargs={"temperature": 0.8, "top_p": 0.8, "top_k": 50},
    huggingfacehub_api_token=os.getenv("HUGGINGFACE_API_KEY"),
)

# 设置提示模板
template = """You are a helpful assistant. Answer based on the Costco business context.

Context: {context}
Question: {question}
Answer:"""

prompt = PromptTemplate(template=template, input_variables=["context", "question"])

# 创建检索QA链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever(),
    chain_type_kwargs={"prompt": prompt},
)

# 示例查询
query = "What is Costco's primary business model?"
answer = qa_chain.run(query)
print("Answer:", answer)

额外说明:当前LangChain版本中,CharacterTextSplitter已迁移至langchain_text_splitters包,需提前安装:pip install langchain-text-splitters

内容的提问来源于stack exchange,提问作者ACR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:05:13