前言
在上一篇(快捷入口)文章中,博主提到了一个向量存储,其中用到了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 依赖环境
序号 | 依赖环境 | 版本号 |
---|---|---|
1 | python | 3.12.4 |
2 | chromadb | 0.5.3(最新版 ) |
3 | langchain_community | 0.3.0(最新版 ) |
4 | langchain-text-splitters | 0.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的大模型学习手册(入门级)