chroma-go:简易的向量数据库客户端
chroma-go A Go client for ChromaDB 项目地址: https://gitcode.com/gh_mirrors/ch/chroma-go
项目介绍
chroma-go 是一个用 Go 语言编写的简单 Chroma 向量数据库客户端。Chroma 是一种高性能的向量数据库,用于存储和检索嵌入向量。chroma-go 为 Go 开发者提供了一种方便的方式来与 Chroma 数据库进行交互,支持创建租户、数据库、集合,以及添加、查询、修改和删除文档等操作。
项目技术分析
chroma-go 采用了 Go 语言的网络/HTTP 包来实现与 Chroma API 的通信。项目支持与 Chroma API 的特性对齐,包括创建租户、数据库、集合、文档计数、版本获取等功能。此外,chroma-go 还支持多种嵌入向量模型,如默认的 all-MiniLM-L6-v2 模型、OpenAI 嵌入、Cohere、Sentence Transformers、Google Gemini Embedding 等。
项目在代码质量上追求极致,提供了详尽的文档和示例代码,帮助开发者快速上手。同时,chroma-go 支持多种重排函数,如 Cohere、Jina AI 和 HuggingFace 嵌入推理服务器重排器,以优化搜索结果。
项目技术应用场景
chroma-go 适用于需要处理大量文本数据的场景,如搜索引擎、推荐系统、文本相似度匹配等。以下是几个具体的应用场景:
- 搜索引擎优化:通过将文档内容转换为嵌入向量,chroma-go 可以快速检索相似文档,提高搜索结果的准确性。
- 推荐系统:在推荐系统中,chroma-go 可以用来分析用户行为和物品属性,从而提供更精准的推荐。
- 文本分析:在文本分析领域,chroma-go 可以帮助分析文档之间的相似度,用于文档分类、聚类等任务。
项目特点
- 功能完整:chroma-go 支持与 Chroma API 的全面特性对齐,包括文档的增删改查、集合管理、租户和数据库管理等。
- 多模型支持:项目支持多种嵌入向量模型,能够满足不同场景下的需求。
- 简单易用:chroma-go 提供了简洁的 API 和详尽的文档,开发者可以快速上手。
- 性能优异:Go 语言的性能优势使得 chroma-go 在处理大规模数据时表现优异。
- 安全性:项目支持私有 PKI 和自签名证书,保障数据传输的安全性。
以下是一个使用 chroma-go 的示例代码:
package main
import (
"context"
"fmt"
"log"
"os"
chroma "github.com/amikos-tech/chroma-go"
"github.com/amikos-tech/chroma-go/collection"
"github.com/amikos-tech/chroma-go/types"
)
func main() {
client, err := chroma.NewClient(chroma.WithBasePath("http://localhost:8000"))
if err != nil {
log.Fatalf("Error creating client: %s", err)
return
}
defer client.Close()
newCollection, err := client.NewCollection(
context.TODO(),
"test-collection",
collection.WithHNSWDistanceFunction(types.L2),
)
if err != nil {
log.Fatalf("Error creating collection: %s", err)
}
rs, err := types.NewRecordSet()
if err != nil {
log.Fatalf("Error creating record set: %s", err)
}
rs.WithRecord(types.WithDocument("My name is John. And I have two dogs."))
rs.WithRecord(types.WithDocument("My name is Jane. I am a data scientist."))
if _, err = rs.BuildAndValidate(context.TODO()); err != nil {
log.Fatalf("Error validating record set: %s", err)
}
if _, err = newCollection.AddRecords(context.Background(), rs); err != nil {
log.Fatalf("Error adding documents: %s", err)
}
countDocs, err := newCollection.Count(context.TODO())
if err != nil {
log.Fatalf("Error counting documents: %s", err)
}
fmt.Printf("countDocs: %v\n", countDocs) // 应输出 2
qr, err := newCollection.Query(context.TODO(), []string{"I love dogs"}, 5, nil, nil, nil)
if err != nil {
log.Fatalf("Error querying documents: %s", err)
}
fmt.Printf("qr: %v\n", qr.Documents[0][0]) // 应输出关于狗的文档
}
chroma-go 是一个值得推荐的 Go 语言向量数据库客户端,能够帮助开发者轻松实现复杂的数据检索和分析任务。通过其官方文档和示例代码,开发者可以快速熟悉并应用于实际项目中。
chroma-go A Go client for ChromaDB 项目地址: https://gitcode.com/gh_mirrors/ch/chroma-go
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考