Install
openclaw skills install doc-search-cloud处理文档向量化、存储和语义检索。支持 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.
openclaw skills install doc-search-cloud提供完整的文档向量化和语义检索功能,能够:
Invoke when:
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()获取向量库统计信息
返回:
{
"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 哈希模拟(默认)
模式 2: Sentence Transformers(推荐)
paraphrase-multilingual-MiniLM-L12-v2 模型sentence-transformers数据存储:
chroma_data/documents_data.pklchroma_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)
2. 混合检索(BM25+ 向量)
| 问题 (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 库