AI创想

标题: 向量数据库对比以及Chroma操作 [打印本页]

作者: 创想小编    时间: 4 天前
标题: 向量数据库对比以及Chroma操作
作者:CSDN博客
一、向量数据库与传统类型数据库

向量数据库(Vector Storage Engine)与传统类型的数据库如关系型数据库(MySQL)、文档型数据库(MongoDB)、键值存储(Redis)、全文搜索引擎(Elasticsearch,简称ES)等在设计理念、应用场景和技术实现上存在显著差异。以下是它们之间的对比:
1.1. 向量数据库

1.2. 关系型数据库(MySQL)

1.3. 文档型数据库(MongoDB)

1.4. 键值存储(Redis)

1.5. 全文搜索引擎(Elasticsearch)

二、向量数据库 vs. 其他类型数据库对比

2.1. 数据模型与核心功能

数据库类型数据模型核心功能典型场景
向量数据库高维向量(如512维浮点数组)相似性搜索(余弦、欧氏距离等)图像/文本检索、推荐系统、AI模型嵌入
关系型数据库(MySQL)结构化表格(行与列)SQL查询、ACID事务、复杂关联查询金融交易、ERP系统、结构化数据管理
文档数据库(MongoDB)JSON/BSON文档(半结构化)灵活查询、嵌套文档存储日志存储、用户配置、内容管理系统
键值数据库(Redis)键-值对(简单数据结构)高速缓存、原子操作会话缓存、排行榜、实时计数器
搜索引擎(Elasticsearch)文本+倒排索引全文检索、模糊匹配、聚合分析日志分析、电商搜索、文本内容检索
2.2. 查询方式对比

数据库类型查询特点
向量数据库基于向量距离的近似最近邻(ANN)搜索,支持相似性排序(如 Top-K 结果)
关系型数据库基于SQL的精确查询,支持JOIN、GROUP BY等复杂操作,强调数据一致性
文档数据库基于文档字段的灵活查询(如嵌套查询、范围过滤),支持部分索引
键值数据库基于键的精确读写,支持简单范围查询(如 SCAN),但无复杂关联操作
搜索引擎基于关键词的全文检索,支持模糊匹配、分词、相关性评分(TF-IDF/BM25)
2.3. 性能与优化方向

数据库类型性能优化重点瓶颈
向量数据库高维向量索引(如HNSW、IVF-PQ)加速相似性搜索高维数据计算复杂度高,内存占用大
关系型数据库事务处理、索引优化(B+树)、锁机制复杂JOIN和大表查询的延迟
文档数据库文档结构灵活性、分片扩展性嵌套层级过深时的查询效率下降
键值数据库低延迟读写、内存优化数据持久化与内存成本的平衡
搜索引擎倒排索引压缩、分词效率、分布式查询高基数字段的聚合性能(如去重统计)
2.4. 适用场景示例

场景推荐数据库原因
人脸识别1:N检索向量数据库(如Milvus、Pinecone)需快速比对海量高维向量,支持ANN索引和GPU加速
电商订单管理关系型数据库(MySQL)需要事务支持、订单状态一致性及复杂关联查询
用户行为日志存储文档数据库(MongoDB)半结构化日志格式灵活,支持动态字段扩展
实时在线游戏排行榜键值数据库(Redis)低延迟读写,支持有序集合(ZSET)实现实时排名
新闻内容全文检索搜索引擎(Elasticsearch)支持分词、相关性排序、高亮显示等文本特性
2.5. 核心差异总结

维度向量数据库其他数据库
数据本质非结构化高维向量(AI生成)结构化或半结构化数据(文本、数值、文档等)
查询目标相似性匹配(模糊结果)精确匹配或范围查询
索引技术ANN索引(如HNSW、Faiss)B+树、倒排索引、哈希索引等
硬件依赖依赖GPU/高性能计算加速向量运算通常依赖CPU和内存优化
扩展性分布式向量索引,横向扩展集群分库分表(关系型)或分片(NoSQL)
三、选择参考

四、向量数据库对比

以下是几款知名向量数据库的对比分析,从是否收费、是否开源、适用场景及出品方等维度:
4.1. Milvus

4.2. Pinecone

4.3. Chroma

4.4. Faiss

4.5. Weaviate

4.6. Qdrant

4.7. 对比总结表

数据库开源收费模式适用场景出品方核心优势
Milvus社区免费/企业付费企业级大规模检索、多模态应用Zilliz(中国)分布式扩展、国产化支持
PineconeSaaS按需付费快速部署、实时搜索Pinecone(美国)全托管、易用性高
Chroma免费/托管收费轻量级开发、多媒体检索开源社区安装便捷、适合原型验证
Faiss免费高性能计算、算法研究MetaGPU加速、高计算效率
Weaviate社区免费/企业付费语义搜索、知识图谱集成SeMI Technologies模块化、多模态支持
Qdrant免费/托管收费高精度混合检索开源社区性能均衡、混合搜索支持

五、Chroma 基本操作

(, 下载次数: 1)


5.1. Chroma 安装

Chroma 可以通过 Python 的包管理工具 pip 来安装。首先确保你已经安装了 Python 和 pip。然后,在你的命令行工具中运行以下命令:
  1. pip install chromadb
复制代码
这将下载并安装最新版本的 Chroma 及其依赖项。
启动命令
命令行直接运行以下启动命令
  1. # --path 指定数据文件存储目录./chromadb
  2. chroma run --path ./chromadb --host=0.0.0.0 --port=8000
复制代码
以下是启动成功的界面:

(, 下载次数: 1)


验证安装
为了验证 Chroma 是否成功安装,你可以尝试在 Python shell 或者你的 Python 脚本中导入 Chroma:
  1. import chromadb
  2. print(chromadb.__version__)# 输出 0.6.1
复制代码
如果这段代码能够顺利执行,并打印出 Chroma 的版本号,则说明安装成功。
5.2. Chroma 基本操作

使用 Python 操作Chroma向量数据库
创建连接
如果你在本地运行chroma,并且把数据存放在内存存储,可以这样创建客户端
  1. from chromadb import Client
  2. chroma_client = Client()
复制代码
如果你在本地运行chroma,并且把数据存放在本地存储,可以这样创建客户端
  1. from chromadb import Client
  2. from chromadb import Settings
  3. settings = Settings(persist_directory=r".\codes\chroma", is_persistent=True)
  4. chroma_client = Client(settings=settings)
复制代码
如果你在服务端运行chroma,服务器端存储数据,可以这样创建客户端
  1. from chromadb import HttpClient
  2. chroma_client = HttpClient(host='localhost', port=8000)
复制代码
创建表
  1. #创建或获取一个名为 "my_collection" 的集合
  2. collection = chroma_client.create_collection(name="my_collection", get_or_create=True)#或者
  3. collection = chroma_client.get_or_create_collection(name="langchain")
复制代码
添加数据
  1. import uuid
  2. defget_uuid():returnstr(uuid.uuid4())
  3. ids=[get_uuid()for _ inrange(2)]
  4. documents =["我今天去上学","天气很好"]
  5. collection.add(ids=ids, documents=documents)
  6. collection.add(ids=get_uuid(), documents="外面下雨了")
复制代码
查询数据
  1. results = collection.get(include=["embeddings","documents"])
  2. collection.get()
复制代码
删除数据
  1. collection.delete(ids=['d687b743-b678-4124-8fef-15b5fd11c01e'])
复制代码
更新数据
  1. collection.update(ids=['8ad95c3e-57fb-498d-884e-84d52493983b'],
  2.                 documents=["我今天很高兴啊"])
复制代码
六、向量数据库的基本原理

以下以 Chroma 为例,说明其原理及文本相似性搜索的实现过程:
(1) 数据向量化
(2) 向量存储与索引
(3) 相似性度量
(4) 查询处理
为什么能实现高效文本相似性搜索
关键技术作用
ANN算法(如HNSW)将搜索复杂度从O(N)降至O(logN),支持十亿级数据毫秒响应。
语义向量化将文本语义编码为稠密向量,突破关键词匹配局限(如近义词、抽象概念)。
内存优化存储列式存储+SIMD指令加速向量运算,提升吞吐量。
并行计算多线程/GPU加速距离计算,适合高并发场景。




原文地址:https://blog.csdn.net/lihuayong/article/details/146286652




欢迎光临 AI创想 (https://llms-ai.com/) Powered by Discuz! X3.4