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에 색인 생성기 및 검색기 사용에 관한 일반적인 내용은 검색 증강 생성 페이지를 참조하세요.