HOW_TO_VIEW.md 3.5 KB

如何查看分块结果和数据库内容

方法1:使用查看工具(推荐)

查看数据库内容

cd d:\agentlearning\lqq-agent-study\02_RAG_study
python view_chunks.py

然后选择选项1查看数据库内容

测试检索

选择选项2或3进行检索测试

方法2:直接在Python中查看

创建一个Python脚本或使用Jupyter Notebook:

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:测试检索效果

# 测试检索
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 中添加以下代码:

# 单元格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_sizechunk_overlap 后,重新构建数据库,然后用这些工具查看

Q: 相似度分数是什么意思?

A: 分数越小越相似,0表示完全匹配。余弦距离。

Q: 如何导出数据?

A: 使用 vectorstore.get() 获取所有数据后,可以保存为JSON或其他格式:

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)