向量数据库 Chroma 和 Milvus的使用
一、什么是向量数据库?向量数据库(Vector Database)是专门用来存储和检索向量数据的数据库。它广泛应用于图像搜索、推荐系统、自然语言处理等领域。
简单理解:
[*]你给数据库一堆「特征向量」(比如图片、文本的数字表达)
[*]你问数据库「最像这个向量的有哪些?」
[*]数据库快速返回「最相似」的结果
二、Chroma 和 Milvus 简介
名称特点语言支持适用场景Chroma轻量级、Python友好、易上手Python小项目、原型、快速开发Milvus企业级、高性能、支持多种部署方案多语言(Python、Go等)大规模、高并发、复杂场景三、环境准备
[*]操作系统:Windows / Mac / Linux 都可以
[*]Python 版本:3.7 及以上
[*]安装包管理器:pip
四、安装与配置
1 、安装 Chroma
直接安装Python库
pip install chromadb2 、安装 Milvus
Milvus 分为两个部分:
[*]Milvus Server(核心数据库服务,需单独安装或用Docker运行)
[*]Milvus Python SDK(客户端,方便Python调用)
2.1、使用官方推荐脚本(最省心)
Milvus 官方提供的脚本会自动启用嵌入式 etcd 并正确配置启动:.
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
bash standalone_embed.sh start2.2、验证安装
启动后查看容器状态:
docker ps应显示 milvus_standalone 正常运行
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/816d589dccea4e898681614cdc171435~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg6L2v5Lu25rWL6K-V5ZCb:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMzU0MDkwMTExMjMxNzIyNCJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1752981701&x-orig-sign=5CM2MWqB1pnzlJPNTPQvA9LxGb4%3D
查看日志确认 embedded etcd 启动成功,无连接错误:
docker logs milvus_standalone启动日志无报错
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/5e6f70a4685e44d19cfcad350079f2ff~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg6L2v5Lu25rWL6K-V5ZCb:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMzU0MDkwMTExMjMxNzIyNCJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1752981701&x-orig-sign=ZUNhm3UNs80LzExURhKTGiBKlco%3D
测试连接端口:
nc -zv localhost 19530成功连接表示 Milvus 已正常监听端口。
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/451f3ed1b40540db9aae92316f558e8e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg6L2v5Lu25rWL6K-V5ZCb:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMzU0MDkwMTExMjMxNzIyNCJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1752981701&x-orig-sign=GAIZDHQ6UilBmYyTiXVAgJHAD0M%3D
2.3、安装 Milvus Python SDK
pip install pymilvus五、使用示例
1、Chroma 简单示例
import chromadb
# 创建客户端 - 使用新的配置方式
client = chromadb.PersistentClient(path=".chromadb/")
# 创建/获取集合 - 使用 get_or_create_collection 避免重复创建错误
collection = client.get_or_create_collection("test_collection")
# 插入向量数据
collection.add(
documents=["苹果", "香蕉", "橘子"],# 文本描述
embeddings=[, , ],# 对应向量(示例)
ids=["1", "2", "3"]
)
# 查询最相似向量
results = collection.query(
query_embeddings=[],
n_results=1
)
print(results)返回结果
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/0f3cb555a01b4dd689311fbf87bbceee~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg6L2v5Lu25rWL6K-V5ZCb:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMzU0MDkwMTExMjMxNzIyNCJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1752981701&x-orig-sign=0X9bc%2FmF3Vt2ke%2B2APQzAw2iBF0%3D
说明:
[*]documents 是你给数据库的文本
[*]embeddings 是文本的向量表示(通常由模型生成)
[*]查询时传入一个向量,返回最接近的n个结果
2 、Milvus 简单示例
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
# 连接 Milvus
connections.connect("default", host="127.0.0.1", port="19530")
# 定义集合结构
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=False),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=3)
]
schema = CollectionSchema(fields, "test collection")
# 创建集合
collection = Collection("test_collection", schema)
# 插入数据
ids =
embeddings = [
,
,
]
collection.insert()
# 创建索引
index_params = {
"index_type": "IVF_FLAT",
"params": {"nlist": 10},
"metric_type": "L2"
}
collection.create_index("embedding", index_params)
# 加载集合
collection.load()
# 查询向量
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search([], "embedding", search_params, limit=2)
for result in results:
print(f"id: {result.id}, distance: {result.distance}")运行结果
https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/2f99537108aa4e20b3b596451a27cdaf~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg6L2v5Lu25rWL6K-V5ZCb:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMzU0MDkwMTExMjMxNzIyNCJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1752981701&x-orig-sign=We6XIRuOQZgYLZeCE8sqaJQpM%2Bo%3D
六、总结
功能ChromaMilvus安装纯Python库,简单快速需要运行服务,推荐Docker部署适合项目规模小型、开发测试大规模、生产环境语言支持Python优先多语言支持性能适中高性能,支持分布式
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]