开始使用免费开始使用

构建检索函数

在检索增强生成(RAG)流程中,一个关键步骤是从数据库中检索数据。在本练习中,您将设计一个名为 retrieve() 的自定义函数,它将在课程最后一个练习中执行这一关键过程。

本练习是课程的一部分

使用 Pinecone 构建 AI 应用

查看课程

练习说明

  • 使用您的 API 密钥初始化 Pinecone 客户端(OpenAI 客户端已作为 client 提供)。
  • 定义函数 retrieve,它接收 4 个参数:querytop_knamespaceemb_model
  • 使用 emb_model 参数对输入的 query 进行嵌入。
  • 检索与 query_emb 最相似的 top_k 个向量,并返回其元数据;同时将函数参数中提供的 namespace 用作命名空间。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Initialize the Pinecone client
pc = Pinecone(api_key="____")
index = pc.Index('pinecone-datacamp')

# Define a retrieve function that takes four arguments: query, top_k, namespace, and emb_model
def retrieve(query, top_k, namespace, emb_model):
    # Encode the input query using OpenAI
    query_response = ____(
        input=____,
        model=____
    )
    
    query_emb = query_response.data[0].embedding
    
    # Query the index using the query_emb
    docs = index.query(vector=____, top_k=____, namespace=____, include_metadata=True)
    
    retrieved_docs = []
    sources = []
    for doc in docs['matches']:
        retrieved_docs.append(doc['metadata']['text'])
        sources.append((doc['metadata']['title'], doc['metadata']['url']))
    
    return retrieved_docs, sources

documents, sources = retrieve(
  query="How to build next-level Q&A with OpenAI",
  top_k=3,
  namespace='youtube_rag_dataset',
  emb_model="text-embedding-3-small"
)
print(documents)
print(sources)
编辑并运行代码