向量数据库技术系列三-Chroma介绍

一、前言

     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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值