ChromaDB 向量庫優化技巧實戰

chroma 一步步使用

安裝

# 安裝chromadb
pip install chromadb,sentence_transformers# 不啟動服務會出現sock.connect(sa)TimeoutError: timed out
chroma run

服務啟動后,您將看到類似以下輸出:
在這里插入圖片描述

建立連接

部署完成后,需要建立與Chroma服務的連接:

import chromadb# 創建了臨時客戶端。程序終止時,您提取的任何數據都會丟失
client = chromadb.Client()

創建向量集合

chroma連接若直接創建集合(“Collection”(集合)是存儲向量的基本單位,類似于關系型數據庫中的表),會使用內置的嵌入模型all-MiniLM-L6-v2

# 首先導入embedding模型
from chromadb.utils import embedding_functionscollection = chroma_client.create_collection(name="my_collection")
collection.add(documents=["關于深度學習技術的文檔","關于的愛情小說文檔"],ids=["id1", "id2"]
)
print(collection)

chroma默認使用歐氏距離計算向量相似度

查詢文檔

Chroma提供多種查詢方式,滿足不同場景需求:

1. 基于ID查詢

當你知道確切的文檔ID時,可以直接查詢:

# 根據ID獲取文檔
result = collection.get(ids=["id1"]
)
2. 語義向量檢索

RAG系統的核心功能是語義檢索,基于查詢與文檔的語義相似度:

# 語義檢索
# Chroma 默認會返回 10 條結果。這里我們只添加了 2 個文檔,因此我們設置n_results=2
results = collection.query(query_texts=["如何使用向量數據庫?"],n_results=2
)
print(results)

工程中優化

混合檢索

Chroma還支持將全文匹配與向量檢索結合:

# 全文匹配 + 向量檢索
results = collection.query(query_texts=["檢索技術的應用"],n_results=2,where_document={"$contains": "檢索"},  # 文檔必須包含"檢索"一詞include=["documents", "metadatas"]
)

Chroma支持將向量檢索與元數據過濾結合,實現更精準的查詢:

# 元數據過濾 + 向量檢索
results = collection.query(query_texts=["大語言模型的應用"],n_results=2,where={"topic": "llm"},  # 僅檢索topic為llm的文檔include=["documents", "metadatas"]
)

元數據過濾支持多種操作符:

  • 相等:{"field": value}
  • 不等:{"field": {"$ne": value}}
  • 大于/小于:{"field": {"$gt": value}}{"field": {"$lt": value}}
  • 范圍:{"field": {"$gte": min_value, "$lte": max_value}}
  • 復合條件:{"$and": [condition1, condition2]}
調參:索引與性能優化

Chroma默認使用HNSW(分層可導航小世界圖)作為向量索引算法,無需手動創建索引。但你可以通過元數據調整索引參數:

# 創建集合時設置HNSW參數
collection = client.create_collection(name="optimized_collection",embedding_function=embedding_func,metadata={"hnsw:space": "cosine",       # 相似度度量方式"hnsw:M": 16,                 # 每個節點的最大連接數"hnsw:ef_construction": 200,  # 構建索引時的搜索寬度"hnsw:ef": 100                # 查詢時的搜索寬度}
)

關鍵參數解釋:

  • M:控制圖的連接度,值越大精度越高但內存消耗也越大
  • ef_construction:影響索引質量,值越大精度越高但構建速度越慢
  • ef:影響查詢精度和速度,值越大召回率越高但查詢速度越慢

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905786.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905786.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905786.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全球泳裝與沙灘裝市場深度洞察:從功能性需求到可持續時尚的蛻變(2025-2031)

泳裝與沙灘裝作為水上活動與度假場景的核心服飾,正經歷從單一功能性產品向“科技時尚可持續”融合的轉型。根據QYResearch預測,2031年全球市場規模將達2512.4億元人民幣,年復合增長率(CAGR)4.0%(2025-2031&…

WebRTC技術下的EasyRTC音視頻實時通話SDK,助力車載通信打造安全高效的智能出行體驗

一、方案背景? 隨著智能交通與車聯網技術的飛速發展,車載通信在提升行車安全、優化駕駛體驗以及實現智能交通管理等方面發揮著越來越重要的作用。傳統的車載通信方式在實時性、穩定性以及多媒體交互能力上存在一定局限,難以滿足現代車載場景日益復雜的…

主流數據庫運維故障排查卡片式速查表與視覺圖譜

主流數據庫運維故障排查卡片式速查表與視覺圖譜 本文件將主文檔內容轉化為模塊化卡片結構,并補充數據庫結構圖、排查路徑圖、鎖機制對比等視覺圖譜,以便在演示、教學或現場排障中快速引用。 📌 故障卡片速查:連接失敗 數據庫檢查…

升級kafka4.0.0,無ZK版本

設備規劃: 172.20.192.47 kafka-0 172.20.192.48 kafka-1 172.20.192.49 kafka-2 單機塊7TB Nvme磁盤一共9塊 # 格式化成GPT分區 sudo parted /dev/nvme0n1 --script mklabel gpt sudo parted /dev/nvme1n1 --script mklabel gpt sudo parted /dev/nvme2n1 --s…

Vue 學習隨筆系列二十三 -- el-date-picker 組件

el-date-picker 組件 文章目錄 el-date-picker 組件el-date-picker 只有某些日期可選 el-date-picker 只有某些日期可選 <template><div><el-form ref"form" size"mini":model"form" :rules"rules"label-width"8…

使用Python實現簡單的人工智能聊天機器人

最近研學過程中發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊鏈接跳轉到網站人工智能及編程語言學習教程。讀者們可以通過里面的文章詳細了解一下人工智能及其編程等教程和學習方法。下面開始對正文內容的…

[QMT量化交易小白入門]-五十四、核心資產ETF輪動目前年化只有74%了,在過濾掉當天止損,當天買入的之后

本專欄主要是介紹QMT的基礎用法,常見函數,寫策略的方法,也會分享一些量化交易的思路,大概會寫100篇左右。 QMT的相關資料較少,在使用過程中不斷的摸索,遇到了一些問題,記錄下來和大家一起溝通,共同進步。 文章目錄 相關閱讀買入邏輯詳解代碼塊作用解析止損邏輯詳解代碼…

實戰解析MCP-使用本地的Qwen-2.5模型-AI協議的未來?

文章目錄 目錄 文章目錄 前言 一、MCP是什么&#xff1f; 1.1MCP定義 1.2工作原理 二、為什么要MCP&#xff1f; 2.1 打破碎片化的困局 2.2 實時雙向通信&#xff0c;提升交互效率 2.3 提高安全性與數據隱私保護 三、MCP 與 LangChain 的區別 3.1 目標定位不同 3.…

數據中心末端配電監控產品

精密配電介紹 數據中心配電系統圖 交流220V和直流-48V、240V、336V(400V)對比 產品簡介 AMC精密配電監控解決方案是針對精密配電柜&#xff08;列頭柜&#xff09;的監控要求&#xff0c;設計開發一套完整的解決方案&#xff0c;包括交流&#xff08;AC 220V&#xff09;、直…

工業4G路由器IR5000公交站臺物聯網應用解決方案

隨著城市化進程的加速&#xff0c;公共交通是智慧城市的重要樞紐。城市公共交通由無數的公交站臺作作為節點組合而成&#xff0c;其智能化升級成為提升城市出行效率與服務質量的關鍵。傳統公交站臺信息發布滯后、缺乏實時性&#xff0c;難以滿足乘客對公交信息快速獲取的需求&a…

Qt圖表繪制(QtCharts)- 性能優化(13)

文章目錄 1 批量替換代替追加1.1 測試11.2 測試21.3 測試3 2 開啟OpenGL2.1 測試12.2 測試22.3 測試32.4 測試4 更多精彩內容&#x1f449;內容導航 &#x1f448;&#x1f449;Qt開發 &#x1f448;&#x1f449;QtCharts繪圖 &#x1f448;&#x1f449;python開發 &#x1f…

嵌入式故障碼管理系統設計實現

文章目錄 前言一、故障碼管理系統概述二、核心數據結構設計2.1 故障嚴重等級定義2.2 模塊 ID 定義2.3 故障代碼結構2.4 故障記錄結構 三、故障管理核心功能實現3.1 初始化功能3.2 故障記錄功能3.3 記錄查詢與清除功能3.4 系統自檢功能 四、故障存儲實現4.1 Flash 存儲實現4.2 R…

動態規劃-63.不同路徑II-力扣(LeetCode)

一、題目解析 與62.不同路徑不同的一點是現在網格中有了障礙物&#xff0c;其他的并沒有什么不同 二、算法解析 1.狀態表示 dp[i][j]表示&#xff1a;到[i,j]位置時&#xff0c;不同的路徑數 2.狀態轉移方程 由于多了障礙物&#xff0c;所以我們要判斷是否遇到障礙物 3.初…

使用CherryStudio +SiliconFlow 部署獨立的deepseek+知識庫

deepseek知識庫&#xff0c;獨立的deepseek 首先我們先了解 CherryStudio&#xff1f;SiliconFlow&#xff1f; CherryStudio是一個支持多平臺的AI客戶端&#xff0c;我們致力于讓更多人能夠享受到AI帶來的便利。 簡單來說&#xff0c;它是一個能讓普通人輕松用上AI 的「萬能工…

Openshift節點Disk pressure

OpenShift 監控以下指標&#xff0c;并定義以下垃圾回收的驅逐閾值。請參閱產品文檔以更改任何驅逐值。 nodefs.available 從 cadvisor 來看&#xff0c;該node.stats.fs.available指標表示節點文件系統&#xff08;所在位置&#xff09;上有多少可用&#xff08;剩余&#xf…

MySQL的 JOIN 優化終極指南

目錄 前言序章&#xff1a;為何要有JOIN&#xff1f;——“一個好漢三個幫”的數據庫哲學 &#x1f91d;第一章&#xff1a;JOIN的“七十二變”——常見JOIN類型速覽 &#x1f3ad;第二章&#xff1a;MySQL的“紅娘秘籍”——JOIN執行原理大揭秘 &#x1f575;??♀?&#x1…

TLS 1.3黑魔法:從協議破解到極致性能調優

一、TLS協議逆向工程實驗 1.1 密碼學套件破解劇場 實驗準備&#xff1a; 靶機&#xff1a;啟用TLS 1.2的Nginx服務器 工具集&#xff1a;Wireshark OpenSSL s_client 定制Python腳本 實戰攻擊復現&#xff1a; # 強制使用弱加密套件連接 openssl s_client -connect exa…

國標GB/T 12536-90滑行試驗全解析:純電動輕卡行駛阻力模型參數精準標定

摘要 本文以國標GB/T 12536-90為核心框架&#xff0c;深度解析純電動輕卡滑行試驗的完整流程與數據建模方法&#xff0c;提供&#xff1a; 法規級試驗規范&#xff1a;從環境要求到數據采集全流程詳解行駛阻力模型精準標定&#xff1a;最小二乘法求解 ( FAv^2BvC ) 的MATLAB實…

【GaussDB遷移攻略】DRS支持CDC,解決大規模數據遷移挑戰

目錄 1 背景介紹 2 CDC的實現原理 3 DRS的CDC實現方式 4 DRS的CDC使用介紹 5 總結 1 背景介紹 隨著國內各大行業數字化轉型的加速&#xff0c;客戶的數據同步需求越來越復雜。特別是當需要將一個源數據庫的數據同時遷移到不同的目標庫場景時&#xff0c;華為云通常會創建…

PSA Certified

Arm 推出的 PSA Certified 已成為安全芯片設計領域的黃金標準。通過對安全啟動、加密服務以及更新協議等方面制定全面的要求&#xff0c;PSA Certified為芯片制造商提供了清晰的路線圖&#xff0c;使其能將安全機制深植于定制芯片解決方案的基礎架構中。作為對PSA Certified的補…