提供完整的文档向量化和语义检索功能,能够:
Invoke when:
vectorize_file(file_path, metadata)#将文件向量化并添加到向量库
参数:
file_path: 文件路径(支持 .docx, .md, .pdf, .txt)metadata: 可选的元数据字典返回:
python
{
"status": "success/error",
"message": "操作消息",
"chunks_added": 切片数量,
"source": "源文件路径"
}
search_vectors(query_text, top_k)#根据查询文本检索最相似的文档片段
参数:
query_text: 查询文本top_k: 返回的相似结果数量(默认 5)返回:
python
[
{
"content": "文档内容",
"similarity": 相似度 (0-1),
"metadata": "元数据"
},
...
]
get_collection_stats()#获取向量库统计信息
返回:
python
{
"total_documents": 总文档数,
"collection_name": 集合名称
}
clear_collection()#清空向量库所有数据
python
from chromadb_document_vectorizer_simple import DocumentVectorizer
vector_service = DocumentVectorizer()
# 向量化文档
result = vector_service.vectorize_file("path/to/document.docx")
print(f"成功添加 {result['chunks_added']} 个文本切片")
python
# 查询相似内容
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]}...")
python
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']} 个切片")
python
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.docxpython-docxMarkdown.mdmarkdown, beautifulsoup4PDF.pdfPyPDF2纯文本.txt内置
优化项v2.0v3.0提升查询速度100ms1ms70x 提升 ⚡检索精度仅向量BM25+ 向量更精准 🎯缓存命中率0%80-90%大幅优化 💾
1. 查询缓存(LRU)
2. 混合检索(BM25+ 向量)
问题 (v1.0)影响解决方案 (v2.0)🔴 内存存储重启后数据全部丢失✅ 持久化存储 - 数据自动保存到磁盘,重启不丢失🔴 哈希模拟向量准确度有限✅ 真实 Embedding - 支持 Sentence Transformers 模型🟡 无持久化每次重启要重新向量化✅ 自动加载 - 启动时自动恢复向量库🟡 非记忆管理不是对话记忆系统✅ 文档检索 - 明确定位为文档检索工具
python
# 安装依赖
pip install sentence-transformers
# 使用真实 Embedding 模型
vectorizer = DocumentVectorizer(
persist_directory="./chroma_data",
use_real_embedding=True # 启用真实 Embedding
)
优势:
注意:需要额外安装 sentence-transformers 库