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

일반적인 내용은 검색 증강 생성 페이지를 참조하세요. 을 참조하세요.