Chroma - 开源嵌入数据库。
使用内存构建 Python 或 JavaScript LLM 应用程序的最快方法!
正在上传…重新上传取消| | 文档 | 主页
pip install chromadb # python client
# for javascript, npm install chromadb!
# for client-server mode, docker-compose up -d --build
核心 API 只有 4 个函数(运行我们的💡谷歌协作实验室):
import chromadb
# setup Chroma in-memory, for easy prototyping. Can add persistence easily!
client = chromadb.Client()
# Create collection. get_collection, get_or_create_collection, delete_collection also available!
collection = client.create_collection("all-my-documents")
# Add docs to the collection. Can also update and delete. Row-based API coming soon!
collection.add(
documents=["This is document1", "This is document2"], # we handle tokenization, embedding, and indexing automatically. You can skip that and add your own embeddings as well
metadatas=[{"source": "notion"}, {"source": "google-docs"}], # filter on these!
ids=["doc1", "doc2"], # unique for each doc
)
# Query/search 2 most similar results. You can also .get by id
results = collection.query(
query_texts=["This is a query document"],
n_results=2,
# where={"metadata_field": "is_equal_to_this"}, # optional filter
# where_document={"$contains":"search_string"} # optional filter
)
特征
- 简单:完全键入、完全测试、完全记录 == 幸福
- 集成:🦜️🔗 LangChain(python 和 js),🦙 LlamaIndex以及更多
- 开发、测试、生产:在您的 Python 笔记本中运行的相同 API,可扩展到您的集群
- 功能丰富:查询、过滤、密度估计等
- 免费和开源:Apache 2.0 许可
用例:______ 的 ChatGPT
例如,"Chat your data"
用例:
- 将文档添加到您的数据库。您可以传入自己的嵌入、嵌入函数,或者让 Chroma 为您嵌入它们。
- 用自然语言查询相关文档。
- 将文档编写到 LLM 的上下文窗口中,
GPT3
以进行额外的总结或分析。
嵌入?
什么是嵌入?
- 阅读 OpenAI 的指南
- Literal:嵌入一些东西将它从图像/文本/音频变成数字列表。🖼️或者📄=>
[1.2, 2.1, ....]
。此过程使文档对机器学习模型来说是“可理解的”。 - 以此类推:嵌入表示文档的本质。这使得具有相同本质的文档和查询彼此“接近”,因此易于查找。
- 技术:嵌入是文档在深度神经网络层中的潜在空间位置。对于专门为嵌入数据而训练的模型,这是最后一层。
- 一个小例子:如果您搜索“旧金山著名桥梁”的照片。通过嵌入此查询并将其与您的照片及其元数据的嵌入进行比较 - 它应该返回金门大桥的照片。
嵌入数据库(也称为向量数据库)存储嵌入并允许您按最近的邻居而不是像传统数据库那样按子字符串进行搜索。默认情况下,Chroma 使用Sentence Transformers为您嵌入,但您也可以使用 OpenAI 嵌入、Cohere(多语言)嵌入或您自己的嵌入。
参与其中
Chroma 是一个快速发展的项目。我们欢迎 PR 贡献者和关于如何改进项目的想法。