J'Blog

9 课 · 评估

语义检索

基于 Chroma 向量库,与 Workspace 知识库分离。用自然语言描述你想查的内容。 非管理员每人每天可检索 5 次(消耗站点 AI 配额)。

使用 LangSmith 评估 RAG 应用

原文:LangSmith 评估 RAG 应用

一句话

LangSmith 提供了一套完整的工具和评估器,用于评估 RAG 应用的性能,包括答案正确性、相关性、基础性和检索质量。

什么时候翻这页

当你需要评估和优化你的 RAG 应用性能,或者想了解如何使用 LangSmith 进行系统化的 RAG 评估时。

核心概念

  • RAG 评估工作流程:包含三个主要步骤:创建包含问题和预期答案的数据集、在数据集上运行 RAG 应用、使用评估器测量应用性能
  • 评估器类型
    • 正确性(Correctness):评估生成答案与参考答案的相似度和准确性
    • 相关性(Relevance):评估生成答案是否解决了用户问题
    • 基础性(Groundedness):评估生成答案是否基于检索到的文档,避免幻觉
    • 检索相关性(Retrieval Relevance):评估检索到的文档是否与问题相关
  • LLM-as-judge:使用大型语言模型作为评估器,通过结构化输出确保评估的一致性

怎么做

  1. 环境设置

    • 设置环境变量:LANGSMITH_TRACINGLANGSMITH_API_KEYOPENAI_API_KEY
    • 安装必要的依赖包
  2. 构建 RAG 应用

    • 索引:将文档分块并添加到 vector store
    • 检索:根据用户问题检索相关文档块
    • 生成:将问题和检索到的文档传递给 LLM 生成答案
  3. 创建评估数据集

    • 定义包含问题和参考答案的示例
    • 使用 LangSmith 创建数据集和示例
  4. 定义评估器

    • 为每种评估类型创建评估器函数
    • 使用结构化输出确保评估的一致性
  5. 运行评估

    • 使用 client.evaluate 方法运行评估
    • 指定目标函数、数据集、评估器和实验前缀

命令 / API 速查

  • 环境变量设置:
    os.environ["LANGSMITH_TRACING"] = "true"
    os.environ["LANGSMITH_API_KEY"] = "YOUR LANGSMITH API KEY"
    os.environ["OPENAI_API_KEY"] = "YOUR OPENAI API KEY"
    
  • 依赖安装:
    pip install -U langsmith langchain[openai] langchain-text-splitters bs4 requests
    
  • 创建数据集:
    dataset = client.create_dataset(dataset_name="Lilian Weng Blogs Q&A")
    client.create_examples(dataset_id=dataset.id, examples=examples)
    
  • 运行评估:
    experiment_results = client.evaluate(
        target,
        data=dataset_name,
        evaluators=[correctness, groundedness, relevance, retrieval_relevance],
        experiment_prefix="rag-doc-relevance",
        metadata={"version": "LCEL context, gpt-4-0125-preview"},
    )
    

与 Hello-Agents / LangGraph / 本博客 handbook 索引的联系

本教程中的 RAG 应用构建方法与 Hello-Agents 中学习的检索概念一致,使用了相同的 chunking、embedding 和 vector store 技术。与 LangGraph 结合使用时,可以将 RAG 组件作为节点集成到更复杂的工作流中。本博客 handbook 中已使用 Chroma 作为 vector store,而本教程展示了如何使用 InMemoryVectorStore,两者都是 vector store 的实现,可以互换使用。

初学者易错点

  1. 评估器温度设置:评估器应使用 temperature=0 以确保结果的一致性和确定性
  2. 结构化输出:使用 with_structured_output 确保评估器返回结构化数据
  3. 文档分块:适当的 chunk 大小和重叠对检索质量至关重要
  4. 评估数据集质量:参考答案的质量直接影响正确性评估的准确性
  5. 幻觉检测:基础性评估器是检测 RAG 应用中幻觉的重要工具

相关词条

官方原文:https://docs.langchain.com/langsmith/evaluate-rag-tutorial