当前位置: 首页 > article >正文

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.kler.cn/a/315641.html

相关文章:

  • mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因
  • 【LeetCode】【算法】581. 最短无序连续子数组
  • neo4j desktop基本入门
  • js 获取某日期到现在的时长 js 数字补齐2位
  • Microsoft 365 Exchange如何设置可信发件IP白名单
  • 什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性
  • 【sgCreateCallAPIFunction】自定义小工具:敏捷开发→调用接口方法代码生成工具
  • Java String trim()方法
  • 如何创建模板提示prompt
  • Linux移植之系统烧写
  • Redis 中 String 字符串类型详解
  • 2024年中国研究生数学建模竞赛B题(华为题目)WLAN组网中网络吞吐量建模一
  • libtorch落地AI项目的一些总结
  • 面试题(八)
  • OpenCV_图像膨胀腐蚀与形态学操作及具体应用详解
  • 分布式安装LNMP
  • [OpenCV] 数字图像处理 C++ 学习——16直方图均衡化、直方图比较 详细讲解+附完整代码
  • 超详细的XML介绍【附带dom4j操作XML】
  • 口腔检测系统源码分享
  • php怎么连接使用kafka
  • 【AI算法岗面试八股面经【超全整理】——NLP】
  • 学生管理系统1.0版本
  • Kotlin 基本介绍(一)
  • 如何确保消息只被消费一次:Java实现详解
  • Python 中的 HTTP 编程入门,如何使用 Requests 请求网络
  • 实现人体模型可点击