Pinecone 插件提供索引器和检索器实现,这些函数使用 Pinecone 云矢量数据库。
配置
如需使用此插件,请导入 pinecone
软件包并调用 pinecone.Init()
:
import "github.com/firebase/genkit/go/plugins/pinecone"
if err := pinecone.Init(ctx, ""); err != nil {
return err
}
该插件需要使用您的 Pinecone API 密钥。 通过执行以下任一操作,将插件配置为使用您的 API 密钥:
将
PINECONE_API_KEY
环境变量设置为您的 API 密钥。在初始化插件时指定 API 密钥:
if err := pinecone.Init(ctx, pineconeAPIKey); err != nil { return err }
但是,请勿直接在代码中嵌入您的 API 密钥!仅使用此功能 与 Cloud Secret Manager 或类似服务结合使用。
用法
要将文档添加到 Pinecone 索引,请先创建一个索引定义, 指定您正在使用的索引的名称和嵌入模型:
menuIndexer, err := pinecone.DefineIndexer(ctx, pinecone.Config{
IndexID: "menu_data", // Your Pinecone index
Embedder: googleai.Embedder("text-embedding-004"), // Embedding model of your choice
})
if err != nil {
return err
}
您也可以选择指定 Pinecone 用于文档数据的密钥
(默认为 _content
)。
然后,调用索引的 Index()
方法,并向其传递您所创建的文档的列表
要添加:
if err := menuIndexer.Index(
ctx,
&ai.IndexerRequest{Documents: docChunks, Options: nil},
); err != nil {
return err
}
同样,如需从索引中检索文档,请先创建一个检索器 定义:
menuRetriever, err := pinecone.DefineRetriever(ctx, pinecone.Config{
IndexID: "menu_data", // Your Pinecone index
Embedder: googleai.Embedder("text-embedding-004"), // Embedding model of your choice
})
if err != nil {
return err
}
然后,调用检索器的 Retrieve()
方法,并向其传递文本查询:
resp, err := menuRetriever.Retrieve(ctx, &ai.RetrieverRequest{
Document: ai.DocumentFromText(userInput, nil),
Options: nil,
})
if err != nil {
return err
}
menuInfo := resp.Documents
请参阅检索增强生成页面,了解常规 讨论如何使用 RAG 索引器和检索器。