chroma-go:简易的向量数据库客户端

chroma-go:简易的向量数据库客户端

chroma-go A Go client for ChromaDB chroma-go 项目地址: 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 适用于需要处理大量文本数据的场景,如搜索引擎、推荐系统、文本相似度匹配等。以下是几个具体的应用场景:

  1. 搜索引擎优化:通过将文档内容转换为嵌入向量,chroma-go 可以快速检索相似文档,提高搜索结果的准确性。
  2. 推荐系统:在推荐系统中,chroma-go 可以用来分析用户行为和物品属性,从而提供更精准的推荐。
  3. 文本分析:在文本分析领域,chroma-go 可以帮助分析文档之间的相似度,用于文档分类、聚类等任务。

项目特点

  1. 功能完整:chroma-go 支持与 Chroma API 的全面特性对齐,包括文档的增删改查、集合管理、租户和数据库管理等。
  2. 多模型支持:项目支持多种嵌入向量模型,能够满足不同场景下的需求。
  3. 简单易用:chroma-go 提供了简洁的 API 和详尽的文档,开发者可以快速上手。
  4. 性能优异:Go 语言的性能优势使得 chroma-go 在处理大规模数据时表现优异。
  5. 安全性:项目支持私有 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 chroma-go 项目地址: https://gitcode.com/gh_mirrors/ch/chroma-go

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范芬蓓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值