simple_view.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """简单查看数据库内容"""
  2. import os
  3. import sys
  4. from dotenv import load_dotenv
  5. # 加载环境变量
  6. load_dotenv()
  7. # 切换到正确的工作目录
  8. os.chdir(r"d:\agentlearning\lqq-agent-study\02_RAG_study")
  9. from langchain_community.embeddings import DashScopeEmbeddings
  10. from langchain_community.vectorstores import Chroma
  11. # 初始化
  12. embedding_model = DashScopeEmbeddings(
  13. model="text-embedding-v3",
  14. dashscope_api_key=os.getenv("DASHSCOPE_API_KEY", "")
  15. )
  16. # 加载数据库
  17. db_path = "./car_info_knowledge_db"
  18. print(f"加载数据库: {db_path}")
  19. if not os.path.exists(db_path):
  20. print(f"数据库不存在!")
  21. sys.exit(1)
  22. vectorstore = Chroma(
  23. persist_directory=db_path,
  24. embedding_function=embedding_model
  25. )
  26. # 获取所有数据
  27. result = vectorstore.get()
  28. documents = result.get('documents', [])
  29. metadatas = result.get('metadatas', [])
  30. print(f"\n总块数: {len(documents)}")
  31. if documents:
  32. # 统计
  33. sizes = [len(doc) for doc in documents]
  34. print(f"总字符数: {sum(sizes):,}")
  35. print(f"平均块大小: {sum(sizes)/len(sizes):.1f}")
  36. print(f"最大块: {max(sizes)}")
  37. print(f"最小块: {min(sizes)}")
  38. # 显示前10个块
  39. print("\n" + "=" * 80)
  40. print("前10个块的内容:")
  41. print("=" * 80)
  42. for i in range(min(10, len(documents))):
  43. doc = documents[i]
  44. metadata = metadatas[i] if i < len(metadatas) else {}
  45. print(f"\n【块 #{i+1}】")
  46. print(f"页码: {metadata.get('page', 'N/A')}")
  47. print(f"大小: {len(doc)} 字符")
  48. print(f"内容: {doc[:150].replace(chr(10), ' ')}...")
  49. print("-" * 80)
  50. # 测试检索
  51. print("\n\n测试检索:")
  52. query = "HDC系统"
  53. print(f"查询: {query}")
  54. results = vectorstore.similarity_search_with_score(query, k=3)
  55. for i, (doc, score) in enumerate(results):
  56. print(f"\n结果 #{i+1} (相似度: {score:.4f})")
  57. print(f"内容: {doc.page_content[:150]}...")