ChromaDB教程_2024最新版(上)

前言

在上一篇(快捷入口)文章中,博主提到了一个向量存储,其中用到了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(最新版
5LibreOffice24.8
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.rhkb.cn/news/429541.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务发现和代理实例的自动更新

☞ 返回总目录 1.服务发现的两种方式 StartFindService 方法 这是一个在后台启动的连续 “FindService” 活动,当服务实例的可用性发生变化时,会通过回调通知调用者。 它返回一个FindServiceHandle,可通过调用StopFindService来停止正在进行…

自动化立体仓库与堆垛机单元的技术参数

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是一份自动化立体仓库与堆垛机单…

初识APC机制实现APC注入

参考:APC异步过程调用-CSDN博客 又是跟着红队蓝军师傅学免杀的一天,这节课介绍了APC机制和APC注入的实现。 APC介绍: APC,全称为Asynchronous Procedure Call,即异步过程调用,是指函数在特定线程中被异…

【HTTPS】对称加密和非对称加密

HTTPS 是什么 HTTPS 是在 HTTP 的基础上,引入了一个加密层(SSL)。HTTP 是明文传输的(不安全) 当下所见到的大部分网站都是 HTTPS 的,这都是拜“运营商劫持”所赐 运营商劫持 下载⼀个“天天动听“&…

Java ETL - Apache Beam 简介

基本介绍 Apache Beam是一个用于大数据处理的开源统一编程模型。它允许用户编写一次代码,然后在多个批处理和流处理引擎上运行,如Apache Flink、Apache Spark和Google Cloud Dataflow等。Apache Beam提供了一种简单且高效的方式来实现数据处理管道&…

【Node.js】初识微服务

概述 Node.js 的微服务架构是一种通过将应用程序分解为独立的、松耦合的小服务的方式进行系统设计。 每个微服务负责处理一个特定的业务功能,并且这些服务可以独立开发、部署、扩展和管理,并且可以通讯。 它的核心思想就是解耦。 微服务和微前端是类…

智慧校园建设解决方案建设系统简介

一、建设背景 1.1 政策背景 1.2 班牌的演变 1.3 建设愿景 二、 智慧班牌简介 三、智慧班牌系统 3.1 系统概述 3.2 软件平台功能交互简介 3.2.1 智慧班牌与管理平台间的功能关联 3.2.2 手机客户端(管理员、教师、家长端) 3.2.3 手机客户端&#x…

CleanClip --- 为Mac用户打造的智能剪贴板管理利器

CleanClip是一款专为Mac用户设计的强大剪贴板管理工具,旨在提升用户的工作效率和数据管理体验。它通过智能化的剪贴板内容管理,实现了Mac系统与用户操作之间的无缝衔接。CleanClip支持多种连接方式,包括系统级的快捷操作和自定义快捷键&#…

PHP API 框架:构建高效API的利器

在当今快速发展的互联网时代,API(应用程序编程接口)已成为连接不同应用程序和服务的关键。PHP,作为一种流行的服务器端脚本语言,提供了多种强大的框架来简化API的开发。本文将介绍PHP API框架的重要性,以及…

【宠物小精灵之收服(待更新)】

题目 代码 #include <bits/stdc.h> using namespace std; int f[1010][510]; int main() {int n, m, k;cin >> n >> m >> k;int c 0;for(int i 1; i < k; i){int cost, hp;cin >> cost >> hp;for(int j n; j > cost; j--){for(i…

yarn : 无法加载文件 C:\Users\Rog\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本

yarn : 无法加载文件 C:\Users\Rog\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本 设置命令行窗口默认以管理员身份运行&#xff0c;在此基础上输入以下代码&#xff0c;应该就好使了&#xff0c;切记&#xff0c;以下代码才是关键&#xff0c;我基本上…

肾癌的多模态预测模型-临床-组织学-基因组

目录 摘要 技术路线 ① lncRNA的预测模型 ②病理 WSI 的分类器 ③临床病理分类器 模型结果 与别的模型比较 同行评审学习 1&#xff09;使用lncRNA的原因 2&#xff09;模型临床使用意义 3&#xff09;关于截止值的使用 摘要 A multi-classifier system integrated…

树莓派3B驱动ST7735(内核)(代码篇)(TODO)

书接上回&#xff1a;树莓派3B驱动ST7735&#xff08;内核&#xff09;&#xff08;配置篇&#xff09;_st7735s驱动固件下载-CSDN博客&#xff0c;这次主要是精读一下树莓派内核中的ST7735驱动源码 &#xff08;TODO&#xff09;

Elasticsearch不停机切换(上云)方案

如何给飞行中的飞机换引擎? 背景 业务背景 略 技术背景 线下集群40个索引左右&#xff0c;总数据量不大,不到100G因为ES承担的业务鉴权业务&#xff0c;所以不能接受停机割接 还有就是ES中数据来自各个业务方&#xff0c;推送的时机不定&#xff0c;也没有完备的重推机制&…

ChatGPT 在国内使用的方法

AI如今很强大&#xff0c;聊聊天、写论文、搞翻译、写代码、写文案、审合同等等&#xff0c;ChatGPT 真是无所不能~ 作为一款出色的大语言模型&#xff0c;ChatGPT 实现了人类般的对话交流&#xff0c;最主要是能根据上下文进行互动。 接下来&#xff0c;我将介绍 ChatGPT 在国…

重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引

文章目录 前言为什么叫倒排索引数据结构如何生成如何查询TF、IDF参考文档 前言 上一章&#xff0c;简单介绍了 ES 的节点类型。 本章&#xff0c;我们要介绍 ES 中非常重要的一个概念&#xff1a;倒排索引。 ES 的全文索引就是基于倒排索引实现的。 本章内容建议重点学习&…

Win10 安装Node.js 以及 Vue项目的创建

一、Node.js和Vue介绍 1. Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许你在服务器端运行 JavaScript&#xff0c;使得你能够使用 JavaScript 来编写后端代码。以下是 Node.js 的一些关键特点&#xff1a; 事件驱动和非阻塞 I/O&#xff1a;Node…

Parallels Desktop 20(Mac虚拟机) v20.0.0 for Mac 最新破解版(支持M系列)

Parallels Desktop 20 for Mac 正式发布&#xff0c;完全支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;并且在企业版中引入了全新的管理门户。 据介绍&#xff0c;新版本针对 Windows、macOS 和 Linux 虚拟机进行了大量更新&#xff0c;最大的亮点是全新推出的 Parallels…

数据库提权【笔记总结】

文章目录 UDF提权以有webshell只有数据库权限条件复现msf工具sql语句提权 MOF提权前言条件复现msf工具php脚本提权 sqlserver提权前言条件xp_cmdshell提权复现 沙盒提权介绍复现 Oracle提权靶场搭建执行任意命令复现 通过注入存储过程提权&#xff08;低权限提升至DBA&#xff…

安全帽佩戴识别摄像机:守护安全的智能之眼

在现代工业和建筑等诸多领域中&#xff0c;安全始终是重中之重。每一处施工现场、每一个生产车间都潜藏着可能对人员造成伤害的风险因素。而安全帽&#xff0c;作为保护工作人员头部免受伤害的关键装备&#xff0c;其是否被正确佩戴就显得尤为关键。此时&#xff0c;安全帽佩戴…