一、前言
Chroma是一个开源的AI原生向量数据库,旨在帮助开发者更加便捷地构建大模型应用,将知识、事实和技能等文档整合进大型语言模型(LLM)中。它提供了简单易用的API,支持存储嵌入及其元数据、嵌入文档和查询、搜索嵌入等功能。主要有以下特点:
-
轻量级:Chroma是一个基于向量检索库实现的轻量级向量数据库,不需要复杂的配置和大规模基础设施支持,非常适合小型或中型项目。
-
易用性:提供简单的API,易于集成和使用。开发者可以快速上手,无需复杂的配置。
-
功能丰富:支持存储嵌入及其元数据、嵌入文档和查询、搜索嵌入等功能。
-
多语言支持:提供Python和JavaScript客户端SDK,社区还提供了其他语言的支持。
-
开源:采用Apache 2.0开源许可,社区活跃,不断推动其更新与发展。
二、相关概念
1、数据的组织组件
- 多租户(Tenant)
租户是数据库的逻辑分组,用于模拟一个组织或用户。一个租户可以拥有多个数据库。

- 集合(Collection)
集合是嵌入向量、文档和元数据的分组机制,是存储嵌入、文档和任何附加元数据的地方。类似于传统数据库的表。
文档(Document)
文档是向量化前的原始的文本块。需要注意的是,它并不是文件。
- 元数据(MetaData)
元数据是用来描述文档的相关属性,它是一对kv的键值对,支持String,boolean,int,float类型。
2、存储组件
-
SQLite数据库
在Chroma单节点模式下,所有关于租户、数据库、集合和文档的数据都存储在一个SQLite数据库中。SQLite作为一个轻量级的关系型数据库,能够为Chroma提供稳定的数据存储基础。
3、查询处理组件
- 嵌入函数(Embedding Function)
也称为嵌入模型,提供统一的api接口,将原始的文本转化为向量,chroma支持多种大模型嵌入,比如openai,grmini等,默认为all-MiniLM-L6-v2。
-
距离函数(Distance Function)l
用于计算两个嵌入向量之间的差异(距离)。Chroma支持余弦相似度、欧几里得距离(L2)和内积(IP)等距离函数。在查询过程中,Chroma会根据选定的距离度量,将输入向量与存储的向量进行比较,并返回最相似的向量。
三、基本操作
1、安装chromadb库
以下都使用python进行实操演示
pip install chromadb
2、创建客户端
chroma支持三种客户端类型
(1)非持久化客户端
这种运行在内存中,一般用在对于数据不需要持久化的场景。比如调试,实验的场景。
import chromadb
client = chromadb.Client()
(2)持久化客户端
在创建的时候,可以配置本地的存储路径
import chromadb
chroma_client = chromadb.PersistentClient(path="/chroma/myCollection")
(3)http模式
前两种,都是本地模式,chroma的服务端和客户端需要位于同一台机器。CS模式可以独立部署,通过httpclient进行访问。
import chromadb
chroma_client = chromadb.HttpClient(host='localhost', port=8000)


319

被折叠的 条评论
为什么被折叠?



