Chrome数据库
Chroma简介
Chroma 是一个 AI 原生开源矢量数据库,专为存储嵌入数据(embeddings)及其元数据而设计,它通过为大语言模型(LLM)提供知识、事实和技能,使得构建 LLM 应用程序变得更加容易,Chroma 也是实现大模型RAG(Retrieval-Augmented Generation)技术方案的一种有效工具。
核心功能
1、存储嵌入类型数据:Chroma 能够高效地存储向量数据,这些数据通常用于机器学习模型的训练和推理。
2、嵌入文档和查询:支持将文本数据嵌入到高维空间中,以便进行更复杂的搜索和检索操作。
3、检索功能:提供了强大的检索能力,可以根据嵌入的数据快速找到相关的信息。
4、简单易用:Chroma 的设计注重用户体验,提供了简洁的 API 和易于使用的工具。
5、高性能:即使在处理大量数据时也能保持良好的性能。
6、多语言支持:提供了多种编程语言的客户端 SDK,包括 Java、Go、Python 和 Rust 等。
安装与运行
前提条件
在开始之前,请确保已经安装了 Python 运行环境,如果没有安装,可以从 [Python 官方网站](https://www.python.org/)下载并安装最新版本。
步骤一:安装 Chroma 模块
打开命令行终端,输入以下命令来安装 Chroma 模块:
pip install chromadb
步骤二:创建数据库存储目录
选择一个合适的位置创建一个目录用于存储 Chroma 数据库文件:
mkdir db_data
步骤三:运行 Chroma 服务
使用以下命令启动 Chroma 服务,并指定数据库存储路径:
chroma run --path db_data
成功启动后,你将看到类似如下的信息:
ChromaDB is now running at http://127.0.0.1:8000
步骤四:配置为系统服务(可选)
为了方便管理,可以将 Chroma 配置为系统服务,以下是一个简单的 systemd 服务文件示例:
[Unit] Description=ChromaDB Service After=network.target [Service] ExecStart=/root/anaconda3/bin/chroma run --path /chromadb/db_data User=root Group=root Restart=always RestartSec=3 Environment=CHROMA_SERVER_HOST=127.0.0.1 Environment=CHROMA_SERVER_HTTP_PORT=8881 ANONYMIZED_TELEMETRY=False [Install] WantedBy=multi-user.target
保存上述内容到一个文件中,例如/etc/systemd/system/chromadb.service
,然后执行以下命令启动服务:
systemctl start chromadb
要使其在开机时自动启动,请执行:
systemctl enable chromadb
Python 客户端使用指南
导入模块并创建数据库连接
导入 Chroma 客户端模块并创建一个数据库连接:
import chromadb chroma_client = chromadb.Client()
或者,如果你使用的是 HTTP 客户端:
from chromadb.config import Settings chroma_client = chromadb.HttpClient(host='localhost', port=8000)
创建集合
你可以创建一个集合来存储和管理你的数据:
collection = chroma_client.create_collection(name="my_collection")
注意:集合名称的长度必须在 3 到 63 个字符之间,并且只能包含小写字母、数字、点、破折号和下划线,不能包含两个连续的点或有效的 IP 地址。
添加文档到集合中
向集合中添加文档及其嵌入数据:
collection.add( embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]], documents=["This is a document", "This is another document"], metadatas=[{"source": "my_source"}, {"source": "my_source"}], ids=["id1", "id2"] )
查询最相近的结果
根据查询嵌入找到最相近的文档:
results = collection.query( query_texts=["This is a query document"], n_results=2 )
你还可以使用其他参数来进行更复杂的查询,
results = collection.query( query_embeddings=[[11.1, 12.1, 13.1], [1.1, 2.3, 3.2]], n_results=10, where={"metadata_field": "is_equal_to_this"}, where_document={"$contains":"search_string"} )
更新集合数据
使用update
方法更新集合中的数据:
collection.update( ids=["id1", "id2", "id3"], embeddings=[[1.1, 2.3, 3.2], [4.5, 6.9, 4.4], [1.1, 2.3, 3.2]], metadatas=[{"chapter": "3", "verse": "16"}, {"chapter": "3", "verse": "5"}, {"chapter": "29", "verse": "11"}], documents=["doc1", "doc2", "doc3"] )
如果某些文档不存在,则插入新的文档,使用upsert
方法:
collection.upsert( ids=["id1", "id2", "id3"], embeddings=[[1.1, 2.3, 3.2], [4.5, 6.9, 4.4], [1.1, 2.3, 3.2]], metadatas=[{"chapter": "3", "verse": "16"}, {"chapter": "3", "verse": "5"}, {"chapter": "29", "verse": "11"}], documents=["doc1", "doc2", "doc3"] )
从集合中删除数据
使用delete
方法删除集合中的文档:
collection.delete( ids=["id1", "id2", "id3"], where={"chapter": "20"} )
FAQs
Q1: Chroma 支持哪些编程语言?
A1: Chroma 提供了多种编程语言的客户端 SDK,包括 Java、Go、Python 和 Rust,还支持 HTTP 客户端,可以通过任何支持 HTTP 请求的语言与其交互。
Q2: 如何在 Chrome 扩展中使用 SQLite?
A2: 要在 Chrome 扩展中使用 SQLite,你需要先将 SQLite 库文件添加到扩展项目中,然后在背景脚本中创建数据库连接,并通过执行 SQL 语句来创建表、插入数据、查询数据等,具体步骤如下:
1、下载适用于特定操作系统的 SQLite 库文件,并将其添加到 Chrome 扩展项目的文件结构中。
2、在背景脚本中创建数据库连接:
var db = openDatabase('mydb', '1.0', 'My Database', 2 * 1024 * 1024);
3、使用 SQL 语句操作数据库,例如创建表、插入数据和查询数据:
db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS mytable (id unique, name)'); tx.executeSql('INSERT INTO mytable (id, name) VALUES (?,?)', [1, 'John']); tx.executeSql('SELECT * FROM mytable', [], function (tx, results) { var len = results.rows.length; for (var i = 0; i < len; i++) { console.log(results.rows.item(i).name); } }); });
4、根据需要监听用户操作,并在相应的事件处理函数中调用 SQLite API 完成数据的增删改查。
各位小伙伴们,我刚刚为大家分享了有关“chrome数据库”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1475153.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复