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 := ai.Index(
ctx,
menuIndexer,
ai.WithIndexerDocs(docChunks...)); 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,请参阅检索增强生成页面。