免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


RAG构建知识库还在忍受慢和重?试试Rust原生ChromaDB,轻量、高速、易用!

发布日期:2025-09-03 12:18:03 浏览次数: 1529
作者:码农渔夫

微信搜一搜,关注“码农渔夫”

推荐语

还在为RAG知识库的笨重和低效烦恼?Rust原生的ChromaDB带来轻量级、高性能的向量数据库解决方案!

核心内容:
1. ChromaDB的核心优势:Rust开发、轻量易用、低CPU依赖
2. 快速上手指南:安装、客户端创建、集合配置
3. 完整操作流程:数据写入、元数据管理和查询实践

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家


最近在做大模型RAG相关项目,了解一个向量数据库叫Chroma DB,使用Rust来开发的。

它的优点,开源的,简单轻量,容易上手,对CPU的依赖较低,更多是依赖内存来完成大规模数据,适合做一些矢量搜索、全文搜索等操作。

比较适合中小型项目,不需要过多复杂配置,功能丰富,支持嵌入式文档、查询、搜索嵌入、多模态检测,元数据过滤等。

基本使用很简单。

1、安装chroma DB库

pip install chromadb

2、创建 Client

import chromadb
 
// 有三种方式创建
#1 非持久化客户端
client = chromadb.Client() 

#2 持久化客户端
client = chromadb.PersistentClient(path="/chroma/myCollection"

#3 http模式
client = chromadb.HttpClient(host='localhost', port=8000)

3、创建Collect

from datetime import datetime

collection = client.create_collection(
    name="my_collection",
    embedding_function=emb_fn,
    metadata={
        "description""my first Chroma collection",
        "created": str(datetime.now())
    }
)

可以配置相关参数,name 标识 collect 名称,必填项;embedding_function是指定嵌入函数,可默认嵌入模型;metadata 元数据,如索引方式等(可选)。

4、写入

collection.add(
    ids=["id1""id2""id3", ...],
    embeddings=[[1.12.33.2], [4.56.94.4], [1.12.33.2], ...],
    documents=["doc1""doc2""doc3", ...],
    metadatas=[{"chapter"3"verse"16}, {"chapter"3"verse"5}, {"chapter"29"verse"11}, ...],
    
)

参数解释:

  • ids 是指文本块唯一标识
  • embeddings是对于已经向量化的文本块,可以直接写入结果。注意,如不填,写入时默认的选嵌入函数进行向量化
  • document 是指原始的文本块
  • metadatas 是用来描述文本块的元数据,k-v键值对

5、查询

通过一个小案例;

import chromadb

# 初始化持久化客户端(数据保存到本地)
chroma_client = chromadb.PersistentClient(path="./chroma_data")

# 获取或创建集合(类似于数据库表)
collection = chroma_client.get_or_create_collection(name="my_documents")
# 准备要添加的数据
documents = [
"一只柯基在蹦蹦跳跳",
"一只小狗在奔跑",
"一只鸟在飞",
"汽车在高速公路上行驶",
"苹果是一种水果"
]
ids = ["id1""id2""id3""id4""id5"]
metadatas = [{"type""动物"}, {"type""动物"}, {"type""动物"}, {"type""交通工具"}, {"type""植物"}]

# 将数据添加到集合中
collection.add(
documents=documents,
metadatas=metadatas,
ids=ids
)
# 执行相似性查询:查找与"蹦蹦跳跳的小狗"相似的文档
results = collection.query(
query_texts=["蹦蹦跳跳的小狗"],
n_results=3
)

# 打印查询结果
print("最相似的文档:", results['documents'])
print("对应的ID:", results['ids'])
print("相似度距离:", results['distances']) # 距离越小相似度越高

执行结果:

image.png
  1. "一只小狗在奔跑" (id2) - 距离:0.312 - 最相似

  2. "一只鸟在飞" (id3) - 距离:0.764 - 中等相似

  3. "一只柯基在蹦蹦跳跳" (id1) - 距离:0.782 - 相似度最低

其中的常用向量数据库如Qdrant、Milvus、及FAISS等也非常出色,具体根据需求选择,比如要做超大规模多模态检索,AI搜索引擎,良好集成LangChain/LlamaIndex,可以选择Milvusz这种十几亿级别量级。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询