Files
ailine/tools/test/check_qdrant.py
root a07e398739
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 6m34s
refactor!: 完全异步化 RAG 系统,移除 LangChain ParentDocumentRetriever 依赖
- 重写 rag_core/vector_store.py:完全异步实现 aadd_documents、asimilarity_search
- 重写 app/rag/retriever.py:异步混合检索,移除同步兼容代码
- 修改 rag_indexer/index_builder.py:全链路异步调用
- 删除 rag_core/retriever_factory.py:不再使用 LangChain ParentDocumentRetriever
- 清理冗余导入和代码:移除 model_services 兼容、不需要的异常导入
- 更新 rag_indexer/README.md:反映新架构

核心改进:
- 完全异步化:索引构建和检索全链路 async/await
- 自定义实现:不再依赖 LangChain 的 ParentDocumentRetriever
- 双向量支持:子文档同时存储 dense + sparse 向量到 Qdrant
- 架构清晰:rag_core 公共组件、rag_indexer 索引、app/rag 检索
2026-05-04 14:33:12 +08:00

76 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""
检查 Qdrant 集合里的数据结构
"""
import asyncio
import os
import sys
from backend.rag_core import QdrantHybridStore
from backend.app.model_services import get_embedding_service
def check_qdrant_data():
"""检查 Qdrant 中的数据结构"""
print("="*70)
print("检查 Qdrant 中的数据结构...")
print("="*70)
embeddings = get_embedding_service()
vs = QdrantHybridStore(collection_name="rag_documents", embeddings=embeddings)
client = vs.get_qdrant_client()
# 先获取几个点看看 payload 结构
print("\n获取 5 个随机文档:")
results = client.scroll(
collection_name="rag_documents",
limit=5,
with_payload=True,
with_vectors=True
)
for i, point in enumerate(results[0], 1):
print(f"\n{i}. ID: {point.id}")
print(f" Payload: {point.payload}")
print(f" Payload 键: {list(point.payload.keys())}")
if "text" in point.payload:
text = point.payload["text"]
print(f" Text 长度: {len(text)}")
print(f" Text 预览: {text[:150]}...")
if "page_content" in point.payload:
print(f" page_content: {point.payload['page_content'][:150]}...")
# 看看向量
if point.vector:
print(f" 向量存在: {type(point.vector)}")
if isinstance(point.vector, dict):
print(f" 向量键: {list(point.vector.keys())}")
def check_sparse_embedder():
"""检查稀疏嵌入器"""
from backend.rag_core import get_sparse_embedder
print("\n" + "="*70)
print("检查稀疏嵌入器...")
print("="*70)
sparse_embedder = get_sparse_embedder()
print(f"\n稀疏嵌入器: {sparse_embedder}")
print(f"Vocabulary 大小: {len(sparse_embedder.model.vocab)}")
print(f"示例查询: '冬天 食物'")
# 用中文试试
sparse_vec = sparse_embedder.embed_query("冬天 食物")
print(f"\n生成的稀疏向量:")
print(f" 索引数量: {len(sparse_vec['indices'])}")
print(f" 索引: {sparse_vec['indices'][:10]}")
print(f" 值: {sparse_vec['values'][:10]}")
if __name__ == "__main__":
check_qdrant_data()
check_sparse_embedder()