掘金 人工智能 07月13日 11:56
向量数据库 Chroma 和 Milvus的使用
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了向量数据库的概念及其在图像搜索、推荐系统等领域的应用。文章对比了轻量级的Chroma和企业级的Milvus,提供了详细的安装与配置指南,并给出了Python代码示例,帮助读者快速上手实践。通过对两种数据库的特性对比,文章也为用户选择合适的向量数据库提供了参考。

💡 向量数据库是一种专门用于存储和检索向量数据的数据库,适用于图像搜索、推荐系统、自然语言处理等领域。其核心功能是根据输入的特征向量,快速返回最相似的结果。

💻 Chroma是一个轻量级的向量数据库,使用Python编写,易于安装和上手,适合小项目和快速开发。Milvus则是一个企业级、高性能的向量数据库,支持多种部署方案和多语言,适用于大规模和复杂场景。

⚙️ 环境准备:安装向量数据库需要在Windows、Mac或Linux系统上,Python版本3.7及以上,并使用pip作为包管理器。Chroma可以直接通过pip安装,Milvus需要先安装Milvus Server(推荐Docker)和Milvus Python SDK。

📝 使用示例:文章提供了Chroma和Milvus的简单示例,演示了如何创建数据库、插入向量数据以及查询最相似向量。Chroma示例展示了使用documents、embeddings和ids进行数据操作;Milvus示例则展示了连接Milvus、定义集合结构、插入数据、创建索引、加载集合和查询向量的完整流程。

📊 总结对比:Chroma以其安装简单、Python优先的特性,适合小型项目;Milvus则在性能和语言支持上更胜一筹,适合大规模生产环境。用户应根据项目规模和需求选择合适的向量数据库。

一、什么是向量数据库?

向量数据库(Vector Database)是专门用来存储和检索向量数据的数据库。它广泛应用于图像搜索、推荐系统、自然语言处理等领域。

简单理解:

二、Chroma 和 Milvus 简介

名称特点语言支持适用场景
Chroma轻量级、Python友好、易上手Python小项目、原型、快速开发
Milvus企业级、高性能、支持多种部署方案多语言(Python、Go等)大规模、高并发、复杂场景

三、环境准备

四、安装与配置

1 、安装 Chroma

直接安装Python库

pip install chromadb

2 、安装 Milvus

Milvus 分为两个部分:

2.1、使用官方推荐脚本(最省心)

Milvus 官方提供的脚本会自动启用嵌入式 etcd 并正确配置启动:.

curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.shbash standalone_embed.sh start
2.2、验证安装

启动后查看容器状态:

docker ps

应显示 milvus_standalone 正常运行

查看日志确认 embedded etcd 启动成功,无连接错误:

docker logs milvus_standalone

启动日志无报错

测试连接端口:

nc -zv localhost 19530

成功连接表示 Milvus 已正常监听端口。

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=[[0.1, 0.2, 0.3], [0.2, 0.1, 0.4], [0.15, 0.22, 0.35]],  # 对应向量(示例)    ids=["1", "2", "3"])# 查询最相似向量results = collection.query(    query_embeddings=[[0.1, 0.2, 0.31]],    n_results=1)print(results)

返回结果

说明

2 、Milvus 简单示例

from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection# 连接 Milvusconnections.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 = [1, 2, 3]embeddings = [    [0.1, 0.2, 0.3],    [0.2, 0.1, 0.4],    [0.15, 0.22, 0.35]]collection.insert([ids, embeddings])# 创建索引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([[0.1, 0.2, 0.31]], "embedding", search_params, limit=2)for result in results[0]:    print(f"id: {result.id}, distance: {result.distance}")

运行结果

六、总结

功能ChromaMilvus
安装纯Python库,简单快速需要运行服务,推荐Docker部署
适合项目规模小型、开发测试大规模、生产环境
语言支持Python优先多语言支持
性能适中高性能,支持分布式

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

向量数据库 Chroma Milvus 数据库
相关文章