ปลั๊กอิน Pinecone

ปลั๊กอิน Pinecone จะมีการติดตั้งใช้งานโปรแกรมจัดทำดัชนีและรีทรีฟเวอร์ที่ใช้ Pinecone ฐานข้อมูลเวกเตอร์ระบบคลาวด์

การกำหนดค่า

หากต้องการใช้ปลั๊กอินนี้ ให้นำเข้าแพ็กเกจ pinecone และเรียกใช้ pinecone.Init()

import "github.com/firebase/genkit/go/plugins/pinecone"
if err := pinecone.Init(ctx, ""); err != nil {
    return err
}

ปลั๊กอินต้องใช้คีย์ API ของ Pinecone กำหนดค่าปลั๊กอินเพื่อใช้คีย์ 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