Pinecone 插件

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 索引器和检索器。