前言
在上一篇(快捷入口)文章中,博主提到了一个向量存储,其中用到了Chroma数据库。代码示例如下:
vectordb = Chroma.from_documents(
    documents=docs,
    embedding=embedding,
    persist_directory=vector_dir 
)
这是基于langchain框架的写法,抛弃框架而言,ChromaDB只需要几个关键要素:
- 文档
 即待存储的数据
- 嵌入模型
 指定嵌入(embedding)的算法,即模型
- 存储目录
 即确认存储的路径
那么,博主顺势带着各位看看,如何在不使用大模型框架的前提下,掌握ChromaDB的使用,就像你用jdbcDriver那么简单。
Q:如何掌握Chromadb
1. 简介
Chromais 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的大模型学习手册(入门级)







![[mysql]mysql排序和分页](https://i-blog.csdnimg.cn/direct/5177960b2c45494b854c1548bec698c4.png)











