ChromaDB教程_2024最新版(上)

news2024/11/13 15:30:20

前言

在上一篇(快捷入口)文章中,博主提到了一个向量存储,其中用到了Chroma数据库。代码示例如下:

vectordb = Chroma.from_documents(
    documents=docs,
    embedding=embedding,
    persist_directory=vector_dir 
)

这是基于langchain框架的写法,抛弃框架而言,ChromaDB只需要几个关键要素:

  • 文档
    即待存储的数据
  • 嵌入模型
    指定嵌入(embedding)的算法,即模型
  • 存储目录
    即确认存储的路径

那么,博主顺势带着各位看看,如何在不使用大模型框架的前提下,掌握ChromaDB的使用,就像你用jdbcDriver那么简单。

Q:如何掌握Chromadb

1. 简介

Chroma is the AI-native open-source vector database. Chroma makes it easy to build LLM apps by making knowledge, facts, and skills pluggable for LLMs.

一句话总结:Chroma是一款AI原生开源的矢量(或向量)数据库。它很容易构建大模型应用需要的数据(包括知识、实践等)。

接下来,请跟着博主聚焦下面这张图,这是Chroma的工作原理:
在这里插入图片描述

2. 用途

通过上图,我们可以获得它的几个用途:

序号用途
1存储嵌入数据(store embeddings and their metadata)
2文本嵌入(embed documents and queries)
3搜索(search embeddings)

3. 安装chroma

接下来,我们可以安装Chroma了,首先看看依赖的环境吧,这非常重要!

3.1 依赖环境
序号依赖环境版本号
1python3.12.4
2chromadb0.5.3(最新版
3langchain_community0.3.0(最新版
4langchain-text-splitters0.3.0(最新版
3.2 安装

通过以下命令安装chroma(使用清华的库):

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple chromadb 

Pycharm中,可以通过当前project-setting查看chroma模块是否已存在:

在这里插入图片描述
如上图所示,代表成功。下面可以愉快的使用了。

4. 体验

4.1 示例运行

如果你想直接通过chroma完成存储,可以参考以下示例,可直接运行:

import chromadb
# 定义持久化目录
chroma_client = chromadb.PersistentClient(path="绝对路径")
# 新建一个collection并指定name且name唯一
collection = chroma_client.create_collection(name="chroma_local_db05")
# 添加document
collection.add(
    documents=["天坛", "月饼"],
    metadatas=[{"source": "d1"}, {"source": "d2"}],
    ids=["1", "2"],
)
# 检索
results = collection.query(
    query_texts=["哪个是景点"],
    n_results=2
)
print(f'运行结果为:{results}')

运行结果如下:

运行结果为:
{'ids': [['1', '2']], 
'distances': [[
            1.1227734343972846,
            1.273080295354666
        ]], 
'metadatas': [[
            {'source': 'd1'},
            {'source': 'd2'}
        ]],
'embeddings': None, 
'documents': [ ['天坛', '月饼']], 
'uris': None, 
'data': None, 
'included': ['metadatas', 'documents', 'distances']
}

其中包含了ids、distances、metadatas、documents四个核心list。其中distances结果是根据与问题的相似性进行计算并排序,值越小代表相关性越大。

4.2 查看数据库

当然,你也可以直接打开数据库进行查看。因为4.1执行完成后,会在你指定的持久化目录上生成一个sqlite3数据文件:
在这里插入图片描述
此时,你可以通过Sqlite工具打开该库:
在这里插入图片描述
embedding数据如下:
在这里插入图片描述
在这里插入图片描述

同时,你也可以看到原始数据:

在这里插入图片描述


结语

本文主要介绍了chroma的作用、原理、安装、使用的方面方面。并通过一个示例,可亲自体验一番,希望对你有帮助!

精彩回顾

基于LangChain的大模型学习手册之Embedding(保姆级)
基于DashScope+Streamlit构建你的机器学习助手(入门级)
基于LangChain的大模型学习手册(入门级)
基于Python的大模型学习手册(入门级)


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能车镜头组入门(一)车模的选择

这篇文章,我会简单的介绍下车模的、轮胎和负压的选择 今年的镜头组是自制车模,这比较考验学校之前参赛的经验。我们选择了某飞的mini车模。提供智能车方案的无非就两家,某飞和某邱,我们学校之前都用的是某飞的,在某飞…

功能测试干了2年,快要废了...

8年前刚进入到IT行业,到现在学习软件测试的人越来越多,所以在这我想结合自己的一些看法给大家提一些建议。 最近聊到软件测试的行业内卷,越来越多的转行和大学生进入测试行业,导致软件测试已经饱和了,想要获得更好的待…

14 款全新「史诗级」可穿戴装备即将面世,附上获取教程!

14 个新的可穿戴装备原理图火热出炉,随时可供锻造 🔥 2024 年 7 月,AavegotchiDAO 举办了一次社区设计竞赛,才华横溢的艺术家们施展了他们的设计技能,创造出了 14 个新的可穿戴装备原理图。 现在,这些独一…

spring-boot-maven-plugin插件打包和java -jar命令执行原理

文章目录 1. Maven生命周期2. jar包结构2.1 不可执jar包结构2.2 可执行jar包结构 3. spring-boot-maven-plugin插件打包4. 执行jar原理 1. Maven生命周期 Maven的生命周期有三种: clean:清除项目构建数据,较为简单,不深入探讨&a…

【隐私计算篇】不经意传输协议(OT/OTE)的进一步补充

1. 背景介绍 关于不经意传输(OT)和不经意传输扩展(OT Extension), 我们在之前的文章《OT&OT扩展(不经意传输扩展)深入浅出》做了详细的说明。但对于OT/OTE的一些技术或者概念,还有一定的内容欠缺,因此本文根据冯登国院士关于安全多方计算协议…

实用测评!7种方式将PDF导出为图片,pdf转jpg一键转换!

pdf怎么转换成jpg?pdf是一种通用的便携文件格式之一,而jpg是一种广泛使用的图像格式,平时处理这两种格式文件时,难免会遇到需要将pdf转成jpg格式的情况,例如在学术研究、创意设计、报告提交等领域。 pdf转jpg是一个很常…

GEO数据库提取疾病样本和正常样本|GEO数据库区分疾病和正常样本|直接用|生物信息|生信

GEO数据库提取疾病样本和正常样本|GEO数据库区分疾病和正常样本|直接用|生物信息|生信 代码都可以直接用,修改GSE就可以! 通过代码查看数据的分类,是疾病还是正常样本 ##############################查看对饮GSE样本疾病or正常信息# 指定…

[mysql]mysql排序和分页

#排序和分页本身是两块内容,因为都比较简单,我们就把它分到通一个内容里. #1排序: SELECT * FROM employees #我们会发现,我们没有做排序操作,但是最后出来的107条结果还是会按顺序发出,而且是每次都一样.这我们就有一个疑惑了,现在我们的数据库是根据什么来排序的,在我们没有进…

Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】

目录 Linux权限理解1.Xshell命令以及运行原理2.linux权限的学习2.1linux权限的切换2.2linux权限的概念2.3linux权限管理2.3.1linux中文件访问者的分类2.3.2文件类型和访问权限(文件属性)2.3.2.1文件类型2.3.2.2文件权限拓展—文件的起始权限 2.3.3文件权限管理2.3.4文件权限的应…

Linux环境基础开发工具---vim

1.快速的介绍一下vim vim是一款多模式的编辑器,里面有很多子命令,来实现代码编写操作。 2.vim的模式 vim一共有三种模式:底行模式,命令模式,插入模式。 2.1vim模式之间的切换 2.2 谈论常见的模式---命令模式&#xf…

GEC6818初次连接使用

目录 1.开发板资源接口​编辑​编辑 2.安装 SecureCRT工具 2.1SecureCRT相关问题 3.连接开发板 4.开发板文件传输 4.1串口传输 rx 从电脑下载文件到开发板 sz 从开发板把文件发送到电脑 4.2U盘/SD卡传输 4.3网络传输[重点] 5.运行传到开发板的可执行文件 6.开发板网络…

硬件工程师笔试面试——滤波器

目录 12、滤波器 12.1 基础 滤波器原理图 滤波器实物图 12.1.1 概念 12.1.2 滤波器的分类 12.1.3 滤波器的工作原理 12.1.4 滤波器的应用 12.1.5 滤波器设计的关键参数 12.2 相关问题 12.2.1 不同类型的滤波器在实际应用中的具体作用是什么? 12.2.2 如何设计一个简…

Nodejs+vue+Express游戏分享网站的设计与实现 7a2s2

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式,开发软件有很多种可以用,本次开发用到的软件是vscode,用到的数据库是…

【无标题】rocket

rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来,之后就是将broker启动起来,broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic,因为发消息的逻辑和收消…

kubernetes架构

kubernetes cluster由master和node组成,节点上运行着若干kubernetes服务Master节点: master是kubernetes cluster的大脑,运行着的Daemon服务包括kube-apiserver,kube-scheduler,kube-controller-manager,etcd和Pod网络…

数据处理与统计分析篇-day04-Numpy与Pandas-Series

一. Numpy详解 Numpy的ndarray的属性 Numpy简介 NumPy(Numerical Python)是Python数据分析必不可少的第三方库 NumPy的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型,使其具备了构造复杂数据类型…

如何用麦肯锡方法分析问题和解决问题?

一、什么是麦肯锡方法? 麦肯锡方法,也被称为麦肯锡7S模型,是全球知名咨询公司麦肯锡公司提出的一种管理方法。麦肯锡公司成立于1926年,是全球领先的管理咨询公司,其服务覆盖各个行业和领域,以高质量、高效率…

高精度加法和减法

高精度加法 在C/C中,我们经常会碰到限定数据范围的情况,我们先来看看常用的int和long long两种数据类型的范围吧。 C标准规定:int占一个机器字长。在32位系统中int占32位,即4个字节,所以int的范围是[-2的31次方&#…

云计算实训50——Kubernetes基础命令、常用指令

一、Kubernetes 自动补齐 # 安装自动补齐软件 [rootmaster ~]# yum -y install bash-completion # 临时开启自动补齐功能 [rootmaster ~]# source # 永 久开启自动补齐功能 [rootmaster ~]# echo "source > ~/.bashrc 二、Kubernetes 基础命令 kubectl [command] …

C语言 ——— 编写函数,判断一个整数是否是回文整数

目录 题目要求 代码实现 题目要求 编写一个函数,用来判断一个整数是否是回文整数,如果是回文整数就返回 true ,如果不是就返回 false 举例说明: 输入:121 输出:true 输入:1321 输出&#xf…