name: "doc-search" description: "處理文件向量化、儲存和語義檢索。支援 Word、Markdown、PDF、TXT 等格式。v3.0 新增查詢快取(速度提升 70x)、混合檢索(BM25+ 向量)。Invoke when user needs to vectorize documents, search for similar content, or perform semantic queries on document collections." version: "v3.0.0"
提供完整的文件向量化和語義檢索功能,能夠: - 讀取多種文件格式(Word、Markdown、PDF、TXT) - 將文件分割成文本塊並生成向量嵌入 - 基於語義相似度進行智慧檢索 - 支援批次文件處理和查詢
Invoke when: - 使用者需要將文件轉換為向量進行儲存和檢索 - 使用者要求搜尋文件中與查詢語句相似的內容 - 使用者需要處理 Word、Markdown、PDF 等格式的文件 - 使用者需要進行語義搜尋而非關鍵詞匹配 - 使用者需要管理文件向量庫(新增、查詢、統計)
vectorize_file(file_path, metadata)將檔案向量化並新增到向量庫
引數:
- file_path: 檔案路徑(支援 .docx, .md, .pdf, .txt)
- metadata: 可選的後設資料字典
返回:
{
"status": "success/error",
"message": "操作訊息",
"chunks_added": 切片數量,
"source": "原始檔路徑"
}
search_vectors(query_text, top_k)根據查詢文本檢索最相似的文件片段
引數:
- query_text: 查詢文本
- top_k: 返回的相似結果數量(預設 5)
返回:
[
{
"content": "文件內容",
"similarity": 相似度 (0-1),
"metadata": "後設資料"
},
...
]
get_collection_stats()獲取向量庫統計資訊
訪問小蔥技能站7w4.net,解鎖更多實用的AI技能外掛。
返回:
{
"total_documents": 總文件數,
"collection_name": 集合名稱
}
clear_collection()清空向量庫所有資料
from chromadb_document_vectorizer_simple import DocumentVectorizer
vector_service = DocumentVectorizer()
# 向量化文件
result = vector_service.vectorize_file("path/to/document.docx")
print(f"成功新增 {result['chunks_added']} 個文本切片")
# 查詢相似內容
results = vector_service.search_vectors("智慧家居監測系統功能", top_k=3)
for idx, item in enumerate(results, 1):
print(f"[{idx}] 相似度:{item['similarity'] * 100:.2f}%")
print(f"內容:{item['content'][:100]}...")
files = [
"doc1.docx",
"doc2.md",
"doc3.pdf"
]
for file in files:
result = vector_service.vectorize_file(file)
if result["status"] == "success":
print(f"✅ {file}: {result['chunks_added']} 個切片")
stats = vector_service.get_collection_stats()
print(f"總文件數:{stats['total_documents']}")
模式 1: MD5 雜湊模擬(預設) - 使用 MD5 雜湊生成 384 維向量 - 每個字元的 ASCII 值歸一化到 0-1 - 保證相同文本生成相同向量 - 無需額外依賴
模式 2: Sentence Transformers(推薦)
- 使用 paraphrase-multilingual-MiniLM-L12-v2 模型
- 真實的語義向量表示
- 支援多語言(中文、英文等)
- 需要安裝 sentence-transformers
資料儲存:
- 向量資料:chroma_data/documents_data.pkl
- 檔案索引:chroma_data/documents_index.json
- 自動儲存:每次新增/刪除檔案後自動儲存
- 自動載入:初始化時自動恢復資料
| 格式 | 副檔名 | 依賴 |
|---|---|---|
| Word | .docx | python-docx |
| Markdown | .md | markdown, beautifulsoup4 |
| PyPDF2 | ||
| 純文本 | .txt | 內建 |
| 最佳化項 | v2.0 | v3.0 | 提升 |
|---|---|---|---|
| 查詢速度 | 100ms | 1ms | 70x 提升 ⚡ |
| 檢索精度 | 僅向量 | BM25+ 向量 | 更精準 🎯 |
| 快取命中率 | 0% | 80-90% | 大幅最佳化 💾 |
1. 查詢快取(LRU) - 自動快取熱門查詢 - 重複查詢速度提升 70 倍 - 可配置快取大小(預設 1000 條)
2. 混合檢索(BM25+ 向量) - 關鍵詞匹配 + 語義相似度 - 可調節權重(alpha 引數) - 檢索結果更精準
| 問題 (v1.0) | 影響 | 解決方案 (v2.0) |
|---|---|---|
| 🔴 記憶體儲存 | 重啟後資料全部丟失 | ✅ 持久化儲存 - 資料自動儲存到磁碟,重啟不丟失 |
| 🔴 雜湊模擬向量 | 準確度有限 | ✅ 真實 Embedding - 支援 Sentence Transformers 模型 |
| 🟡 無持久化 | 每次重啟要重新向量化 | ✅ 自動載入 - 啟動時自動恢復向量庫 |
| 🟡 非記憶管理 | 不是對話記憶系統 | ✅ 文件檢索 - 明確定位為文件檢索工具 |
# 安裝依賴
pip install sentence-transformers
# 使用真實 Embedding 模型
vectorizer = DocumentVectorizer(
persist_directory="./chroma_data",
use_real_embedding=True # 啟用真實 Embedding
)
優勢: - 🎯 語義理解更準確 - 🔍 檢索質量更高 - 🌍 支援多語言(中文、英文等)
注意:需要額外安裝 sentence-transformers 庫
這個 Skill 質量較好,功能豐富實用。它能處理多種文件格式、支援語義搜尋和關鍵詞檢索,資料可以永久儲存。文件說明詳細清晰,容易上手。不過在中文分詞和某些細節處理上還有最佳化空間,整體而言是一個可用性較高的文件檢索工具,適合需要處理大量文件並需要進行智慧搜尋的場景。