向量数据库 Chroma 和 Milvus的使用

一、什么是向量数据库?

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

简单理解:

  • 你给数据库一堆「特征向量」(比如图片、文本的数字表达)
  • 你问数据库「最像这个向量的有哪些?」
  • 数据库快速返回「最相似」的结果

二、Chroma 和 Milvus 简介

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

三、环境准备

  • 操作系统:Windows / Mac / Linux 都可以
  • Python 版本:3.7 及以上
  • 安装包管理器:pip

四、安装与配置

1 、安装 Chroma

直接安装Python库

/* by 01130.hk - online tools website : 01130.hk/zh/urlthunder.html */
pip install chromadb

2 、安装 Milvus

Milvus 分为两个部分:

  • Milvus Server(核心数据库服务,需单独安装或用Docker运行)
  • Milvus Python SDK(客户端,方便Python调用)
2.1、使用官方推荐脚本(最省心)

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

/* by 01130.hk - online tools website : 01130.hk/zh/urlthunder.html */
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
bash 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)

返回结果

说明

  • 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 = [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优先多语言支持
性能适中高性能,支持分布式

优秀不够,你是否无可替代

软件测试交流QQ群:721256703,期待你的加入!!

欢迎关注我的微信公众号:软件测试君


<think>好的,用户想了解如何安装使用向量数据库,特别是安装教程使用方法。首先,我需要根据提供的引用内容来整理相关信息。引用[1]提到了安装步骤,包括选择数据库、下载安装包安装。Milvus、Pinecone、Faiss是常见的选项。用户可能对每个数据库的具体安装步骤感兴趣,但引用中只有Milvus的例子,可能需要补充其他数据库的信息吗?不过根据用户的问题,可能更关注通用步骤,所以保持一般性说明。 接下来是使用部分,引用[2][3]提到了Chroma使用,比如创建集合、添加数据以及查询。需要分步骤说明,比如安装客户端库、初始化客户端、创建集合、添加数据、查询相似向量。同时要结合用户问题中的Python代码示例,确保代码符合引用中的内容,比如使用create_collectionadd方法。此外,引用[3]提到了使用余弦相似度,这需要在创建集合时设置元数据,这部分要详细说明。 用户可能的应用场景是大模型结合,比如处理知识库检索,这部分引用[2]有提到,应该作为应用示例加入。还需要注意事项,比如数据预处理性能调优,引用中没有直接提到,但根据常识可以补充,比如嵌入模型选择、数据分块、索引参数调整等。 最后生成相关问题,需要覆盖安装步骤、对比不同数据库、应用场景、性能优化数据预处理等方面。确保问题与用户查询相关,并且基于引用内容,比如引用[2]提到的结合大模型的应用,可以生成相关问题。 检查是否符合系统指令:行内公式正确使用$...$,但这里可能不需要数学公式。独立公式也没有涉及。中文回答,结构清晰,分步骤说明。引用标识正确添加在相关段落末尾。代码块使用正确语法,比如Python示例。然后生成相关问题,确保覆盖用户可能感兴趣的方面。</think>### 向量数据库安装与使用教程 #### 一、安装步骤(以Milvus为例) 1. **选择数据库**:根据需求选择向量数据库,例如$Milvus$(开源)、$Pinecone$(云服务)或$Faiss$(轻量级库)[^1]。 2. **下载安装包** - Milvus:通过Docker镜像安装(推荐) ```bash docker pull milvusdb/milvus:latest docker run -d --name milvus -p 19530:19530 milvusdb/milvus:latest ``` - Faiss:通过Python包安装 ```bash pip install faiss-cpu # CPU版本 pip install faiss-gpu # GPU版本(需CUDA环境) ``` 3. **验证安装** 运行简单代码测试Milvus连接: ```python from pymilvus import connections connections.connect(host='localhost', port='19530') print(connections.list_connections()) # 应显示默认连接 ``` #### 二、基础使用方法(以Chroma为例) 1. **安装客户端库** ```bash pip install chromadb ``` 2. **初始化客户端与创建集合** ```python import chromadb client = chromadb.Client() collection = client.create_collection( name="my_collection", metadata={"hnsw:space": "cosine"} # 定义余弦相似度计算[^3] ) ``` 3. **添加数据与查询** ```python # 添加向量元数据 collection.add( embeddings=[[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]], # 向量数据 metadatas=[{"source": "doc1"}, {"source": "doc2"}], # 关联元数据 ids=["id1", "id2"] ) # 相似度查询 results = collection.query( query_embeddings=[[0.15, 0.25, 0.35]], n_results=1 # 返回最相似的1条 ) print(results["ids"]) # 输出匹配的ID ``` #### 三、典型应用场景 1. **大模型知识库增强** 将语料转换为向量存入数据库,用户提问时先检索相关向量再输入大模型生成答案[^2]。 ```python # 示例流程 question_embedding = embed_model("用户问题") # 生成问题向量 context = vector_db.query(question_embedding) # 检索上下文 answer = llm.generate(context + question) # 大模型生成答案 ``` 2. **图像/视频检索** 将多媒体特征向量化后存储,实现跨模态搜索。 #### 四、注意事项 1. **数据预处理**:需统一向量维度(如768维或1024维) 2. **性能调优**:调整索引类型(如HNSW、IVF)、分片数量等参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值