# 如何查看分块结果和数据库内容 ## 方法1:使用查看工具(推荐) ### 查看数据库内容 ```bash cd d:\agentlearning\lqq-agent-study\02_RAG_study python view_chunks.py ``` 然后选择选项1查看数据库内容 ### 测试检索 选择选项2或3进行检索测试 ## 方法2:直接在Python中查看 创建一个Python脚本或使用Jupyter Notebook: ```python import os from dotenv import load_dotenv from langchain_community.embeddings import DashScopeEmbeddings from langchain_community.vectorstores import Chroma # 加载环境变量 load_dotenv() # 初始化Embedding模型 embedding_model = DashScopeEmbeddings( model="text-embedding-v3", dashscope_api_key=os.getenv("DASHSCOPE_API_KEY", "") ) # 加载向量数据库 vectorstore = Chroma( persist_directory="./car_info_knowledge_db", # 你的数据库路径 embedding_function=embedding_model ) # 获取所有文档 result = vectorstore.get() documents = result.get('documents', []) metadatas = result.get('metadatas', []) # 打印统计信息 print(f"总块数: {len(documents)}") print(f"总字符数: {sum(len(doc) for doc in documents):,}") # 查看前10个块 for i in range(min(10, len(documents))): print(f"\n块 #{i+1}") print(f"页码: {metadatas[i].get('page', 'N/A')}") print(f"大小: {len(documents[i])} 字符") print(f"内容: {documents[i][:150]}...") ``` ## 方法3:测试检索效果 ```python # 测试检索 query = "你的问题" results = vectorstore.similarity_search_with_score(query, k=3) for i, (doc, score) in enumerate(results): print(f"结果 #{i+1} (相似度: {score:.4f})") print(f"页码: {doc.metadata.get('page', 'N/A')}") print(f"内容: {doc.page_content[:200]}...") ``` ## 方法4:使用Jupyter Notebook 在 `rag_test.ipynb` 中添加以下代码: ```python # 单元格1:加载库 from langchain_community.embeddings import DashScopeEmbeddings from langchain_community.vectorstores import Chroma import os # 单元格2:加载数据库 embedding = DashScopeEmbeddings( model="text-embedding-v3", dashscope_api_key=os.getenv("DASHSCOPE_API_KEY") ) vectordb = Chroma( persist_directory="./car_info_knowledge_db", embedding_function=embedding ) # 单元格3:查看统计 result = vectordb.get() docs = result['documents'] print(f"总块数: {len(docs)}") print(f"平均块大小: {sum(len(d) for d in docs) / len(docs):.1f} 字符") # 单元格4:查看具体块 for i in range(min(5, len(docs))): print(f"\n块 #{i+1} ({len(docs[i])}字符)") print(docs[i][:200]) print("-" * 60) # 单元格5:测试检索 query = "HDC系统" results = vectordb.similarity_search_with_score(query, k=3) for doc, score in results: print(f"相似度: {score:.4f}") print(doc.page_content[:150]) print("-" * 60) ``` ## 常见问题 ### Q: 数据库在哪里? A: 默认存储在 `./car_info_knowledge_db` 或 `./investment_knowledge_db` 目录 ### Q: 能修改分块后重新查看吗? A: 可以。修改 `chunk_size` 和 `chunk_overlap` 后,重新构建数据库,然后用这些工具查看 ### Q: 相似度分数是什么意思? A: 分数越小越相似,0表示完全匹配。余弦距离。 ### Q: 如何导出数据? A: 使用 `vectorstore.get()` 获取所有数据后,可以保存为JSON或其他格式: ```python import json result = vectorstore.get() with open('chunks_export.json', 'w', encoding='utf-8') as f: json.dump({ 'documents': result['documents'], 'metadatas': result['metadatas'] }, f, ensure_ascii=False, indent=2) ```