Trình bổ trợ Pinecone cung cấp các phương thức triển khai cho trình lập chỉ mục và truy xuất dữ liệu sử dụng Cơ sở dữ liệu vectơ trên đám mây Pinecone.
Cấu hình
Để sử dụng trình bổ trợ này, hãy nhập gói pinecone
và gọi pinecone.Init()
:
import "github.com/firebase/genkit/go/plugins/pinecone"
if err := pinecone.Init(ctx, ""); err != nil {
return err
}
Trình bổ trợ yêu cầu khoá API Pinecone của bạn. Định cấu hình trình bổ trợ để sử dụng khoá API bằng cách thực hiện một trong những thao tác sau:
Đặt biến môi trường
PINECONE_API_KEY
thành khoá API.Chỉ định khoá API khi bạn khởi chạy trình bổ trợ:
if err := pinecone.Init(ctx, pineconeAPIKey); err != nil { return err }
Tuy nhiên, đừng nhúng trực tiếp khóa API vào mã! Chỉ sử dụng tính năng này cùng với một dịch vụ như Cloud Secret Manager hoặc các dịch vụ tương tự.
Cách sử dụng
Để thêm tài liệu vào chỉ mục Pinecone, trước tiên hãy tạo định nghĩa chỉ mục chỉ định tên của chỉ mục và mô hình nhúng mà bạn đang sử dụng:
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
}
Bạn cũng có thể tuỳ ý chỉ định khoá mà Pinecone sử dụng cho dữ liệu tài liệu
(_content
, theo mặc định).
Sau đó, hãy gọi phương thức Index()
của chỉ mục, chuyển vào phương thức này danh sách tài liệu bạn
muốn thêm:
if err := ai.Index(
ctx,
menuIndexer,
ai.WithIndexerDocs(docChunks...)); err != nil {
return err
}
Tương tự, để truy xuất tài liệu từ một chỉ mục, trước tiên hãy tạo trình truy xuất định nghĩa:
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
}
Sau đó, hãy gọi phương thức Retrieve()
của trình truy xuất, truyền vào phương thức đó một truy vấn văn bản:
resp, err := menuRetriever.Retrieve(ctx, &ai.RetrieverRequest{
Document: ai.DocumentFromText(userInput, nil),
Options: nil,
})
if err != nil {
return err
}
menuInfo := resp.Documents
Hãy xem trang Thế hệ tăng cường truy xuất để biết thông tin chung thảo luận về cách sử dụng trình lập chỉ mục và trình tha mồi cho RAG.