chroma go
v0.1.4
ไคลเอนต์ฐานข้อมูล chroma vector ง่าย ๆ ที่เขียนใน GO
ทำงานกับ Chroma Version: v0.4.3 - v0.5.x
เราขอเชิญชวนผู้ใช้ไปเยี่ยมชมเว็บไซต์เอกสารสำหรับห้องสมุดสำหรับข้อมูลเชิงลึกเพิ่มเติม: Chroma Go Docs
0.2.0 +เรายังรองรับรุ่นเริ่มต้น all-MiniLM-L6-v2 ที่ทำงานบนรันไทม์ ONNX (ORT) จากการเปิดตัว 0.2.0 ไคลเอ็นต์ Chroma Go ยังรองรับฟังก์ชั่นการเปลี่ยนเส้นทาง รองรับต่อไปนี้:
สำคัญ
มีการเปลี่ยนแปลงใหม่มากมายที่นำไปสู่ v0.2.0 ตามที่บันทึกไว้ด้านล่าง หากคุณต้องการใช้โปรดติดตั้งไคลเอนต์เวอร์ชันล่าสุด
go get github.com/amikos-tech/chroma-go@maingo get github.com/amikos-tech/chroma-goนำเข้า:
import (
chroma "github.com/amikos-tech/chroma-go"
)ตรวจสอบให้แน่ใจว่าคุณมีอินสแตนซ์ของการทำงานของ Chroma เราขอแนะนำหนึ่งในสองตัวเลือกต่อไปนี้:
Docker , minikube และ kubectl )การตั้งค่า (คลาวด์-พื้นเมือง):
minikube start --profile chromago
minikube profile chromago
helm repo add chroma https://amikos-tech.github.io/chromadb-chart/
helm repo update
helm install chroma chroma/chromadb --set chromadb.allowReset=true,chromadb.apiVersion=0.4.5 - หมายเหตุ: ในการลบคลัสเตอร์ minikube: minikube delete --profile chromago
พิจารณาตัวอย่างต่อไปนี้โดยที่:
package main
import (
"context"
"fmt"
"log"
"os"
chroma "github.com/amikos-tech/chroma-go"
"github.com/amikos-tech/chroma-go/collection"
openai "github.com/amikos-tech/chroma-go/pkg/embeddings/openai"
"github.com/amikos-tech/chroma-go/types"
)
func main () {
// Create a new Chroma client
client , err := chroma . NewClient ( chroma . WithBasePath ( "http://localhost:8000" ))
if err != nil {
log . Fatalf ( "Error creating client: %s n " , err )
return
}
// Close the client to release any resources such as local embedding functions
defer func () {
err = client . Close ()
if err != nil {
log . Fatalf ( "Error closing client: %s n " , err )
}
}()
// Create a new collection with options. We don't provide an embedding function here, so the default embedding function will be used
newCollection , err := client . NewCollection (
context . TODO (),
"test-collection" ,
collection . WithMetadata ( "key1" , "value1" ),
collection . WithHNSWDistanceFunction ( types . L2 ),
)
if err != nil {
log . Fatalf ( "Error creating collection: %s n " , err )
}
// Create a new record set with to hold the records to insert
rs , err := types . NewRecordSet (
types . WithEmbeddingFunction ( newCollection . EmbeddingFunction ), // we pass the embedding function from the collection
types . WithIDGenerator ( types . NewULIDGenerator ()),
)
if err != nil {
log . Fatalf ( "Error creating record set: %s n " , err )
}
// Add a few records to the record set
rs . WithRecord ( types . WithDocument ( "My name is John. And I have two dogs." ), types . WithMetadata ( "key1" , "value1" ))
rs . WithRecord ( types . WithDocument ( "My name is Jane. I am a data scientist." ), types . WithMetadata ( "key2" , "value2" ))
// Build and validate the record set (this will create embeddings if not already present)
_ , err = rs . BuildAndValidate ( context . TODO ())
if err != nil {
log . Fatalf ( "Error validating record set: %s n " , err )
}
// Add the records to the collection
_ , err = newCollection . AddRecords ( context . Background (), rs )
if err != nil {
log . Fatalf ( "Error adding documents: %s n " , err )
}
// Count the number of documents in the collection
countDocs , qrerr := newCollection . Count ( context . TODO ())
if qrerr != nil {
log . Fatalf ( "Error counting documents: %s n " , qrerr )
}
// Query the collection
fmt . Printf ( "countDocs: %v n " , countDocs ) //this should result in 2
qr , qrerr := newCollection . Query ( context . TODO (), [] string { "I love dogs" }, 5 , nil , nil , nil )
if qrerr != nil {
log . Fatalf ( "Error querying documents: %s n " , qrerr )
}
fmt . Printf ( "qr: %v n " , qr . Documents [ 0 ][ 0 ]) //this should result in the document about dogs
}make buildmake testmake generate make lint-fixหมายเหตุ: ต้องติดตั้ง Docker
make server