ChromaDB 是一個原生開源的嵌入式資料庫,輕量且易用,主要使用在 AI 和機器學習,儲存和查詢向量資料庫,數據會藉由嵌入(Embedding)算法文本或圖像轉換而來,輕鬆建立LLM 應用程式,他也可運行在記憶體或作為資料庫伺服器使用。
優點:
輕量級開源資料庫
易於使用:透過 Python 套件直接安裝使用
功能多樣:Embedding 儲存、取用、查詢、檢索
支援多種服務:OpenAI、 Gemini、 Ollama,從文本生成到圖像檢所
整合:LangChain 和 LlamaIndex ,可接軌現有的 RAG(檢索增強生成)架構
接下來就開始安裝和簡易的操作使用:
1. 安裝chromadb
pip install chromadb
2. 建立資料庫
三種儲存方式,持久化資料庫、memory 或 http
Memory:
簡易且輕量,資料存在記憶體,但應用程式重啟或資料庫重建時,資料會遺失,適合資料要快速存取,但不用持久化。
import chromadb
chroma_client = chromadb.Client()
持久化資料庫:
資料持久化到磁碟上,應用程式重啟後資料一樣可以載入,適合需要長期保存的向量資料。
import chromadb
chormadb_client = chormadb.PersistentClient(path="./data")
http:
允許不同的應用程式通過 API 與資料庫交互
運行伺服器:
chromadb start --host 0.0.0.0 --port 8000
客戶端連接伺服器:
import chromadb
# 創建一個連接到伺服器的 ChromaDB 客戶端
chormadb_client = chromadb.Client(host="http://localhost", port=8000)
3. 創建集合 (Collection)
數據儲存在資料集合(Collection)中,每個集合可以儲存多個向量資料(documents)。
collection = chormadb_client.create_collection(name="collection_name")
4. 創建資料
將文件或資料嵌入向量,並將向量加入到資料集合。
collection.add(
documents=["Document 1", "Document 2"], # 原始文本數據或文檔
embeddings=[[1, 2, 3], [4, 5, 6]], # 向量嵌入的數值列表或數組
metadatas=[{"author": "Alice", "topic": "AI"}, {"author": "Bob", "topic": "ML"}], # 附加數據
ids=["doc1", "doc2"] # 唯一識別符
)
embeddings
: 嵌入向量,用於進行相似度檢索。documents
: 對應於嵌入的原始文本資料,檢索結果會返回這些文檔。metadatas
: 與每個文檔相關的附加元數據,提供上下文或過濾選項。ids
: 唯一標識符,幫助管理和查找每個文檔或數據項。5. 查詢向量資料庫
資料儲存後就可以根據嵌入向量進行相似度查詢,來檢索與查詢向量最接近的文件。
# 根據嵌入向量查詢相似文件
results = collection.query(
query_embeddings=[[1, 2, 3]],
n_results=1
)
print(results)
query_texts
:根據文本查詢,放入相關問題或字句,希望根據提供的文本相似結果進行檢索 (維度要相同)query_embeddings
:根據嵌入向量查詢,嵌入是將文本或其他數據轉換成數字向量過程,向量代表數據意圖n_results
:限制回傳的筆數6. 更新與刪除資料
# 更新文檔向量
collection.update(
ids=["doc1"],
embeddings=[[7, 8, 9]]
)
# 刪除文檔
collection.delete(ids=["doc1"])
以上就是 chromadb 的介紹啦!