RAG 系统测试题

#RAG #测试 #自测

答案见 [[RAG_测试题_答案]]


第一部分:概念理解(判断/选择)

Q1. RAG 的全称是什么?它解决了 LLM 的哪三个核心问题?


Q2. 以下关于向量嵌入(Embedding)的说法,哪些正确?(多选)

  • A. 语义相近的两段文字,其向量之间的 L2 距离越小
  • B. text-embedding-v4 模型输出 512 维向量
  • C. 向量数据库可以按语义相似度进行搜索
  • D. 同一句话转换两次,每次得到的向量一定完全不同

Q3. 本项目的 Milvus 使用的索引类型是 IVF_FLAT,其中:

  • nlist=128 代表什么?
  • nprobe=10 代表什么?
  • 如果想提高搜索精度但可以接受更慢的速度,应该如何调整这两个参数?

Q4. 本项目的混合搜索中,向量搜索权重是多少?关键词搜索权重是多少?融合分数如何计算?


Q5. 意图识别功能的作用是什么?本项目支持哪四个意图分类?


第二部分:系统架构

Q6. 请画出(或用文字描述)本项目的三层服务架构,包括每层对应的文件名和端口号。


Q7. 完整版 RAG 服务(rag_service.py)和简化版(rag_service_simple.py)各运行在哪个端口?请列出完整版比简化版多出的三个功能。


Q8. 数据库 Collection ai_knowledge_base 有哪些字段?每个字段的作用是什么?


Q9. 本项目用什么工具进行中文分词?这个工具提取的结果存储在哪个字段里?用于什么类型的搜索?


Q10. 项目使用的 LLM 是哪家公司的哪个模型?Embedding 模型是什么?需要什么 API Key?


第三部分:数据流程

Q11. 请按顺序描述"数据入库流程"的完整步骤(从 Markdown 文件到 Milvus 存储完成)。


Q12. 当用户提问"人工智能在金融行业有哪些应用?“时,完整版 RAG 服务会依次执行哪些步骤才能返回答案?


Q13. 查询扩展(Query Expansion)的核心思路是什么?以"什么是机器学习?“为例,写出可能的3个扩展查询。


Q14. 向量搜索中,L2 距离(欧氏距离)和相似度是什么关系?本项目中如何将 L2 距离转换为相似度分数?


第四部分:代码理解

Q15. 阅读以下伪代码,回答问题:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def hybrid_search(query, top_k=5, vector_weight=0.7):
    query_vector = get_embedding(query)
    vector_results = collection.search(query_vector, limit=top_k * 2)
    keyword_results = collection.query(keywords_filter, limit=top_k * 2)

    merged = {}
    for r in vector_results:
        similarity = 1 / (1 + r.distance)
        merged[r.id] = vector_weight * similarity
    for r in keyword_results:
        if r["id"] in merged:
            merged[r["id"]] += (1 - vector_weight) * 0.8
        else:
            merged[r["id"]] = (1 - vector_weight) * 0.8

    return sorted(merged.items(), key=lambda x: x[1], reverse=True)[:top_k]
  • a. 为什么搜索时用 top_k * 2 而不是直接用 top_k
  • b. 公式 1 / (1 + r.distance) 的作用是什么?当 distance=0 时结果是多少?
  • c. 如果一个文档同时出现在向量搜索和关键词搜索结果中,它的最终分数如何计算?

Q16. 在 RAG 生成回答的 Prompt 中,系统会要求 LLM 做什么?“温度参数 temperature” 在意图识别时设为 0.1,在查询扩展时设为 0.7,为什么这两个场景需要不同的温度?


第五部分:优化与扩展

Q17. 当前项目的 Markdown 切块策略是什么?这种方式有什么潜在问题?请提出两种改进方案。


Q18. 什么是重排序(Reranking)?它在 RAG 流程中的哪个位置起作用?比普通向量相似度排序有什么优势?


Q19. 本项目当前缺少评估体系。请解释以下四个 RAG 评估指标的含义:

  • faithfulness(忠实度)
  • answer_relevancy(回答相关性)
  • context_precision(上下文精确率)
  • context_recall(上下文召回率)

Q20. 如果你要把这个 RAG 系统用于一个法律文书查询场景,你会做哪些针对性的改进?(至少提出3点)


完成后对照 [[RAG_测试题_答案]] 检查你的答案