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