资讯动态

OpenViking RAG Benchmark 实战:从零搭建 RAG 检索增强生成评估流水线

发布时间:2026/9/6 15:56:49 来源:尧图企业网站定制
OpenViking RAG Benchmark 实战从零搭建 RAG 检索增强生成评估流水线【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenVikingOpenViking 仓库在benchmark/RAG/下内置了一个独立的 RAG检索增强生成系统评估框架用于量化 OpenViking 在文档摄取、向量检索与答案生成全链路上的表现。本文基于 benchmark/RAG/README_zh.md 展开并结合pipeline.py、vector_store.py、metrics.py等源码实现带你完成数据集准备、配置调优、分阶段运行、结果判读与实验复现的完整闭环读完后可独立用 4 个标准数据集Locomo、SyllabusQA、Qasper、FinanceBench对 OpenViking 的 RAG 能力做可复现的基准评测。框架定位与项目结构RAG Benchmark 是一个独立的评估框架完全兼容最新版本的 OpenViking。它的职责边界很清晰Benchmark 自身不管理任何向量存储而是通过 Python HTTP SDK 连接一个由配置决定的 OpenViking Server内容和向量索引的存储位置完全由 Server 侧管理。目录结构如下位于benchmark/RAG/benchmark/RAG/ ├── src/ # 源代码 │ ├── __init__.py │ ├── pipeline.py # 评估核心流水线 │ ├── adapters/ # 数据集适配器 │ │ ├── base.py # 基础适配器类 │ │ ├── locomo_adapter.py # Locomo 数据集适配器 │ │ ├── syllabusqa_adapter.py # SyllabusQA 数据集适配器 │ │ ├── qasper_adapter.py # Qasper 数据集适配器 │ │ └── financebench_adapter.py # FinanceBench 数据集适配器 │ └── core/ # 核心组件 │ ├── logger.py # 日志模块 │ ├── vector_store.py # 向量存储包装器 │ ├── llm_client.py # LLM 客户端包装器 │ ├── metrics.py # 指标计算 │ ├── judge_util.py # LLM 评判工具 │ └── monitor.py # 监控工具 ├── config/ # 配置文件 │ ├── config.yaml # 主配置文件 │ ├── locomo_config.yaml # Locomo 数据集配置 │ ├── syllabusqa_config.yaml # SyllabusQA 数据集配置 │ ├── qasper_config.yaml # Qasper 数据集配置 │ └── financebench_config.yaml # FinanceBench 数据集配置 ├── scripts/ # 工具脚本 │ ├── download_dataset.py # 数据集下载脚本 │ ├── sample_dataset.py # 数据集抽样脚本 │ ├── prepare_dataset.py # 统一数据集准备脚本 │ └── run_sampling.py # 自定义抽样脚本 ├── raw_data/ # 原始数据集目录下载 ├── datasets/ # 抽样数据集目录 ├── Output/ # 输出结果目录 ├── run.py # 主执行脚本 └── README.md快速开始1. 安装依赖在仓库根目录执行cd OpenViking uv pip install -e .[benchmark] source .venv/bin/activate2. 数据集准备工作流数据集准备分为两个步骤下载从官方源下载原始数据集到raw_data/目录抽样从原始数据集抽样可选到datasets/目录原始数据源 → 下载 → raw_data/{dataset_name}/ → 抽样 → datasets/{dataset_name}/下载数据集download_dataset.pycd benchmark/RAG # 下载所有配置的数据集 python scripts/download_dataset.py # 下载特定数据集 python scripts/download_dataset.py --dataset Locomo # 强制重新下载即使已存在 python scripts/download_dataset.py --dataset Locomo --force抽样数据集sample_dataset.py# 抽样所有数据集使用完整数据集不抽样 python scripts/sample_dataset.py # 抽样特定数据集使用完整数据集不抽样 python scripts/sample_dataset.py --dataset Locomo # 按 QA 数量抽样 python scripts/sample_dataset.py --dataset Locomo --sample-size 100 # 按文档数量抽样推荐 python scripts/sample_dataset.py --dataset Locomo --num-docs 5 # 使用完整数据集显式不抽样 python scripts/sample_dataset.py --dataset Locomo --full # 指定随机种子可重现 python scripts/sample_dataset.py --dataset Locomo --num-docs 5 --seed 42抽样策略有三种文档级抽样推荐--num-docs N先抽 N 个文档保留文档中的所有 QAQA 级抽样--sample-size N随机选择文档直到 QA 计数达到 N完整数据集--full或不指定抽样参数。从 run_sampling.py 源码可以看到官方基准测试使用的是一组固定的**分层抽样stratified**参数全部使用seed42保证可重现性数据集抽样文档数抽样 QA 数Locomo380SyllabusQA790Qasper860FinanceBench312一键准备prepare_dataset.py一步完成下载和抽样# 准备所有数据集使用完整数据集不抽样 python scripts/prepare_dataset.py # 准备特定数据集抽样 5 个文档 python scripts/prepare_dataset.py --dataset Locomo --num-docs 5 # 使用完整数据集显式不抽样 python scripts/prepare_dataset.py --dataset Locomo --full # 跳过下载只抽样现有数据 python scripts/prepare_dataset.py --dataset Locomo --num-docs 5 --skip-download # 跳过抽样只下载 python scripts/prepare_dataset.py --dataset Locomo --skip-sampling3. 更新配置文件中的 dataset_path准备数据集后需要更新评估配置文件中的paths.dataset_path。配置文件位于benchmark/RAG/config/各数据集示例Locomodataset_path: datasets/Locomo/locomo10.jsonSyllabusQAdataset_path: datasets/SyllabusQA目录Qasperdataset_path: datasets/Qasper目录FinanceBenchdataset_path: datasets/FinanceBench/financebench_open_source.jsonl注意对 SyllabusQA、Qasper 这类多文件数据集dataset_path应指向目录适配器会自动查找并加载所有相关文件。以 locomo_config.yaml 为例配置中支持{dataset_name}和{retrieval_topk}模板变量project_name: RAG_Benchmark # Modify Configuration dataset_name: Locomo adapter: module: src.adapters.locomo_adapter class_name: LocomoAdapter execution: max_workers: 8 ingest_workers: 8 retrieval_topk: 5 max_queries: 20 skip_ingestion: false ingest_mode: directory retrieval_instruction: # paths: dataset_path: datasets/{dataset_name}/locomo10.json doc_output_dir: ov_storage/{dataset_name}/{dataset_name}_processed_docs output_dir: Output/{dataset_name}/experiment_test_top_{retrieval_topk} log_file: Output/{dataset_name}/experiment_test_top_{retrieval_topk}/benchmark.log llm: model: doubao-seed-2-0-pro-260215 temperature: 0 base_url: https://ark.cn-beijing.volces.com/api/v3 api_key: your_api_key_here从 run.py 源码看这些模板变量会在启动时用当前配置的dataset_name与retrieval_topk渲染随后统一解析为相对于benchmark/RAG/目录的绝对路径。这意味着你调整retrieval_topk后输出目录experiment_test_top_{retrieval_topk}会自动区分不同 Top-K 实验互不覆盖。4. 配置 LLMllm配置段中的模型同时承担两个角色答案生成从检索到的上下文生成答案LLM 作为评判者LLM-as-judge评估生成答案与黄金答案的匹配度。从 llm_client.py 源码看底层通过langchain_openai.ChatOpenAI封装因此任何兼容 OpenAI 接口base_urlapi_key的服务都可以接入生成失败时会进行 3 次线性退避重试仍失败则抛出RuntimeError终止当前任务。api_key支持配置文件中直接给出也可通过api_key_env_var指定的环境变量注入见 run.py后者更利于避免密钥进入版本控制。5. 配置 OpenViking如需自定义 OpenViking 配置用于数据摄取和检索在benchmark/RAG目录中创建ov.conf文件即可覆盖默认设置。从 run.py 源码确认启动时若检测到该文件会自动设置环境变量OPENVIKING_CONFIG_FILE指向它。配置格式可参考仓库根目录的 examples/ov.conf.examplebenchmark/RAG/目录下也提供了一份针对 Benchmark 场景的 ov.conf.example其中声明了摄取环节实际依赖的嵌入与 VLM 模型{ storage: { agfs: {} }, log: { level: INFO, format: %(asctime)s - %(name)s - %(levelname)s - %(message)s, output: stdout }, embedding: { dense: { model: doubao-embedding-vision-251215, api_key: your_api_key_here, api_base: https://ark.cn-beijing.volces.com/api/v3, dimension: 1024, provider: volcengine, input: multimodal, batch_size: 8 }, max_concurrent: 10 }, vlm: { model: doubao-seed-2-0-pro-260215, api_key: your_api_key_here, api_base: https://ark.cn-beijing.volces.com/api/v3, temperature: 0.0, max_retries: 240, provider: volcengine, thinking: false, max_concurrent: 64 } }配置指南关键参数逐项说明RAG Benchmark 使用 YAML 配置文件控制整个评估过程。各配置段含义如下基本配置dataset_name正在评估的数据集名称同时参与输出路径模板渲染适配器配置adapter.module数据集适配器的 Python 模块路径如src.adapters.locomo_adapteradapter.class_name数据集适配器的类名如LocomoAdapter从 run.py 源码看适配器是动态加载的框架通过importlib.import_module加载模块并用getattr取出类模块或类名错误时会打印清晰的配置检查提示后退出。执行配置executionmax_workers答案生成/评估阶段的并发工作线程数ingest_workers文档摄取的工作线程数per_file模式下生效retrieval_topk每个查询要检索的文档数默认 5max_queries限制要处理的查询数null 全部。从 pipeline.py 的_prepare_tasks可见它在遍历 sample 的 QA 时按全局索引截断skip_ingestion跳过文档摄取复用已有向量索引ingest_mode摄取模式directory或per_fileretrieval_instruction检索的自定义指令默认为空详见后文高级配置。路径配置pathsdataset_path数据集文件或目录的路径doc_output_dir处理后的文档输出目录output_dir评估结果目录log_file日志文件路径。LLM 配置llmmodel模型名称temperature生成温度基准测试用 0 保证确定性base_urlAPI 基础地址api_keyAPI 密钥建议用环境变量替代明文。支持的数据集数据集类型文档数问题数特点Locomo多轮对话101540长对话理解4 种问题类型事实性、时间性、推理、理解SyllabusQA教学大纲395078教育领域6 种问题类型单一事实、多事实、单一推理、多推理、总结、是/否Qasper学术论文15855049研究领域1585 篇 NLP 论文3 种答案类型抽取式、自由形式、是/否FinanceBench金融领域84150金融领域开源子集包含 150 个 QA 对3 种问题类型领域相关、指标生成、新颖生成每个数据集在config/目录中有独立的配置文件按需选择即可# 使用 Locomo 数据集评估 python run.py --config config/locomo_config.yaml # 使用 SyllabusQA 数据集评估 python run.py --config config/syllabusqa_config.yaml # 使用 Qasper 数据集评估 python run.py --config config/qasper_config.yaml # 使用 FinanceBench 数据集评估 python run.py --config config/financebench_config.yaml也可以复制一份配置文件进行自定义cp config/locomo_config.yaml config/my_custom_config.yaml # 编辑 config/my_custom_config.yaml python run.py --config config/my_custom_config.yaml评估流水线五个阶段的源码级拆解评估过程包括 5 个主要阶段。入口脚本run.py --step支持all/gen/eval/del四种模式分别对应流水线中 pipeline.py 的run_generation()、run_evaluation()、run_deletion()三个方法阶段 1数据准备适配器将原始数据集转换为 OpenViking 友好格式。以 locomo_adapter.py 为例data_prepare()把 session 格式的对话 JSON 转写为带时间信息的 Markdown每个 sample 一个{sample_id}_doc.md文件并返回StandardDoc列表sample_id 到文档路径的映射。从源码结构看load_and_transform()还会跳过 Locomo 中category 5的问题对抗性类别并为空答案填充Not mentioned作为黄金答案。阶段 2数据摄取处理后的文档通过 OpenViking SDK 摄取进 Server 的向量存储同时为文档创建嵌入。vector_store.py 中的VikingStoreWrapper.ingest()揭示了两种摄取模式的实际差异directory模式先对所有文档路径求公共祖先目录os.path.commonpath然后整个目录作为一个资源调用client.add_resource(pathcommon_ancestor, waitTrue)。这是推荐模式——目录级摄取让 OpenViking 把整个会话/文档集当作一个整体构建层级结构per_file模式逐个文件调用add_resource每个文件是独立文档。无论哪种模式SDK 都以options{telemetry: True}请求服务端返回遥测数据Benchmark 从中提取 LLM 输入/输出 token 与嵌入 token 统计写入报告的Insertion Efficiency段落——这就是摄取阶段 token 开销指标的来源。阶段 3答案生成对每个问题执行检索 → 构建提示 → 生成答案。pipeline.py 的_process_generation_task展示了完整细节构造增强查询若配置了retrieval_instruction最终查询为f{retrieval_instruction} {qa.question}否则直接用原始问题检索self.db.retrieve(query..., topkretrieval_topk)底层是client.find(query, target_uriviking://resources, limittopk)内容读取对每个检索结果若level 2叶子级资源则read_resource(uri)读取全文否则拼接该层级的abstract与overview每个上下文块截断至前 8000 字符召回计算用MetricsCalculator.check_recall(retrieved_texts, qa.evidence)对照黄金证据计算召回提示构建与生成adapter.build_prompt(qa, context_blocks)生成完整提示经 LLM 生成答案后由post_process_answer()后处理token 统计输入 token 提示 问题的 tiktokencl100k_base计数输出 token 为答案计数。所有任务通过ThreadPoolExecutor(max_workersmax_workers)并发执行任一任务异常都会被记录并在结束后抛出聚合的RuntimeError。阶段 4评估读取generated_answers.json对每条记录F1与每个黄金答案分别计算 token 级 F1取最大值兼容 Qasper 这类多标注者数据集AccuracyLLM 评判调用 judge_util.py 的llm_grader()进行打分。评判提示按数据集路由Locomo使用Locomo_0or4提示只允许0 或 4两档对时间类问题要求宽松只要指向同一日期即判 4 分其他数据集使用Generic_0-4提示按 0–4 五档评分细则4 完美、3 良好、2 部分正确、1 差、0 错误且多黄金答案以 | 分隔、命中任一即可。评判输出要求是 JSON{score: ..., reasoning: ...}解析失败时有正则兜底先匹配score: n再匹配任意 0–4 整数。此外 pipeline.py 中还有一个拒绝回答启发式若生成答案与黄金答案同时命中拒答词表not mentioned、unknown等见 metrics.py 的check_refusal则直接给 F1 1.0、Accuracy 4prompt_type记为Heuristic_Refusal_Check——正确处理不可回答被视为成功。阶段 5数据删除run_deletion()调用VikingStoreWrapper.clear()即client.rm(viking://resources, recursiveTrue)清理本次实验摄取的文档并记录删除耗时到报告。对应命令行用法cd benchmark/RAG # 运行完整评估数据摄取、答案生成、评估和数据删除 python run.py --config config/locomo_config.yaml # 只运行数据摄取和答案生成阶段 python run.py --config config/locomo_config.yaml --step gen # 只运行评估阶段需要前一步生成的答案 python run.py --config config/locomo_config.yaml --step eval # 只运行数据删除阶段 python run.py --config config/locomo_config.yaml --step del评估指标与召回算法框架输出五类指标Recall检索召回率、F1 Score答案 F1、AccuracyLLM 评判分 0–4、Latency检索延迟、Token Usage令牌用量。其中检索召回并非简单的字符串匹配。metrics.py 的check_recall采用严格匹配 软匹配兜底双层策略将所有检索块拼接后归一化小写、去标点、去冠词严格匹配证据若作为完整子串出现直接计命中长度阻断若证据的有效 token 数低于min_soft_match_tokens默认 4如短 ID、实体名严格匹配失败后禁止软匹配防止短文本被宽泛命中软匹配兜底对长文本证据计算其 token 在检索文本中的覆盖率达到soft_threshold默认 0.8即计命中各证据等权最终得分 命中数 / 证据总数。答案 F1 同样是归一化后的 token 级 SQuAD 风格 F1precision、recall 调和平均。输出文件与结果判读评估结果保存在Output/目录具体由output_dir配置决定结构如下Output/ └── {dataset_name}/ └── experiment_{experiment_name}/ ├── generated_answers.json # LLM 生成的答案 ├── qa_eval_detailed_results.json # 详细评估结果 ├── benchmark_metrics_report.json # 聚合指标报告 ├── docs/ # 处理后的文档如果 skip_ingestionfalse └── benchmark.log # 日志文件从 pipeline.py 的_update_report可见指标报告采用读取已有 JSON → 合并写入策略因此--step gen与--step eval分步执行时摄取统计与评估统计能自然累积到同一份报告中。1.benchmark_metrics_report.json摘要报告{ Insertion Efficiency (Total Dataset): { Total Insertion Time (s): 131.98, Total Input Tokens: 142849, Total Output Tokens: 52077, Total Embedding Tokens: 95626 }, Query Efficiency (Average Per Query): { Average Retrieval Time (s): 0.17, Average Input Tokens: 3364.46, Average Output Tokens: 15.5 }, Dataset: Locomo, Total Queries Evaluated: 100, Performance Metrics: { Average F1 Score: 0.318, Average Recall: 0.724, Average Accuracy (Hit 0-4): 2.36, Average Accuracy (normalization): 0.59 } }字段含义Insertion Efficiency为文档摄取性能统计来自摄取遥测Query Efficiency为每个查询的性能均值Performance Metrics为核心评估分数其中标准化准确率 平均 Accuracy / 4。2.generated_answers.json生成的答案单个记录示例{ _global_index: 0, sample_id: conv-26, question: Would Caroline pursue writing as a career option?, gold_answers: [Likely no; though she likes reading, she wants to be a counselor], category: 3, evidence: [D7:5, D7:9], retrieval: { latency_sec: 0.288, uris: [viking://resources/..., viking://resources/...] }, llm: { final_answer: Not mentioned }, metrics: { Recall: 1.0 }, token_usage: { total_input_tokens: 2643, llm_output_tokens: 2 } }字段含义_global_index为唯一查询标识符retrieval.uris记录检索命中的 OpenViking 资源 URI可用于回查命中内容metrics.Recall为 0–1 的检索召回分token_usage为令牌消耗统计。3.qa_eval_detailed_results.json详细评估单个记录示例{ _global_index: 18, question: When did Melanie sign up for a pottery class?, gold_answers: [2 July 2023], llm: { final_answer: 2 July 2023 (mentioned in the conversation on 3 July 2023) }, metrics: { Recall: 1.0, F1: 0.375, Accuracy: 4 }, llm_evaluation: { prompt_used: Locomo_0or4, reasoning: The generated answer explicitly includes the exact date 2 July 2023 that matches the gold answer..., normalized_score: 4 } }字段含义metrics.F1为答案 F10–1metrics.Accuracy为 LLM 评判分0–44 完美llm_evaluation.reasoning保存评判器的推理过程prompt_used标明使用了哪套评判提示如Locomo_0or4、Generic_0-4或Heuristic_Refusal_Check。4.benchmark.log带时间戳的详细执行日志每条查询会输出问题摘要、Recall、延迟评估阶段还会输出含检索 URI、双方答案与评判推理的分隔块便于逐题排查。5.docs/Markdown 格式的处理后文档skip_ingestionfalse时生成可用任意 Markdown 查看器打开。基准测试结果参考与实验复现以下为官方基准测试结果top-5 检索仅供参考数据集评估查询数平均 F1 分数平均召回率平均准确率0-4标准化准确率FinanceBench120.2240.6942.50.625Locomo800.2540.5922.40.600Qasper600.2930.6142.120.529SyllabusQA900.3440.6752.540.636测试配置详情LLM 模型doubao-seed-2-0-pro-260215API 基础地址https://ark.cn-beijing.volces.com/api/v3温度 0确定性输出检索 Top-K 为 5最大工作线程数 8摄取工作线程数 8摄取模式directory检索指令为空。所有数据集使用相同的 LLM 和执行配置特定于数据集的适配器和路径在各自 YAML 文件中配置。复现步骤cd OpenViking/benchmark/RAG # 1. 安装依赖如果尚未安装 uv pip install -e .[benchmark] source .venv/bin/activate # 2. 下载所有数据集 python scripts/download_dataset.py # 3. 对所有数据集运行一键抽样使用与基准测试相同的参数 python scripts/run_sampling.py # 4. 配置您的 LLM API 密钥 # 编辑 config/ 目录下的配置文件在 llm.api_key 字段中设置您的 API 密钥 # 5. 为每个数据集运行评估 python run.py --config config/locomo_config.yaml python run.py --config config/syllabusqa_config.yaml python run.py --config config/qasper_config.yaml python run.py --config config/financebench_config.yaml # 6. 在 Output/{dataset_name}/experiment_test_top_5/ 中查看结果高级配置检索指令retrieval_instruction可以在配置文件中设置自定义检索指令检索时它会被拼接到每个查询前面对应_process_generation_task中的增强查询逻辑。推荐格式# Execution Configuration # Instruction for retrieval, empty by default # Recommended format: Target_modality: xxx.\nInstruction:xxx.\nQuery: retrieval_instruction: Target_modality: text.\nInstruction:Locate the part of the conversation where the speakers discuss.\nQuery:格式三段各有语义Target_modality: xxx.— 指定目标模态文本、图像、音频等Instruction: xxx.— 为检索提供具体指令Query:— 标记实际查询的起点。当retrieval_instruction为空时系统直接使用原始问题检索。自定义数据集提示RAG 使用数据集 × 问题类型粒度的提示指导 LLM 答案生成。每个适配器文件顶部都有一个CATEGORY_INSTRUCTIONS字典如 locomo_adapter.py、syllabusqa_adapter.py、qasper_adapter.py、financebench_adapter.pybuild_prompt()会按问题类别取出对应指令注入提示。Locomo4 类问题的指令示例类别 1事实提取Extract the exact factual answer from the conversation. - Use the exact words from the context when possible - If multiple items, separate with commas类别 2时间相关要求密切关注对话中的 DATE 标签并计算相对时间类别 3推理要求只基于上下文事实、只输出结论不解释推理类别 4理解/意义要求识别象征与隐含意义。此外适配器定义了缺失信息规则If no information is available to answer the question, write Not mentioned这正是评估阶段拒绝启发式能够生效的前提。SyllabusQA覆盖 6 种问题类型single factual、multi factual、single reasoning、multi reasoning、summarization、yes/no。Qasper覆盖 3 种答案类型extractive抽取式、free_form自由形式、yes_no。FinanceBench覆盖 3 种问题类型domain-relevant、metrics-generated、novel-generated。自定义步骤打开对应数据集的适配器文件 → 找到CATEGORY_INSTRUCTIONS字典 → 修改目标问题类型的提示文本 → 重新运行评估。扩展添加新数据集接入新数据集需要实现 base.py 中BaseAdapter定义的接口在src/adapters/中创建新的适配器类继承BaseAdapter构造参数为raw_file_path在config/中创建相应配置文件将adapter.module/adapter.class_name指向新适配器实现必要方法data_prepare(doc_dir)把原始数据转换为 OpenViking 友好格式并返回List[StandardDoc]sample_id → 文档路径load_and_transform()加载原始数据并转换为List[StandardSample]含StandardQA列表question、gold_answers、evidence、categorybuild_prompt(qa, context_blocks)基于检索上下文构建完整提示返回(full_prompt, meta)元组meta用于后处理例如选择题的选项映射post_process_answer(qa, raw_answer, meta)后处理 LLM 原始输出基类默认仅去除首尾空白。由于run.py采用动态模块加载无需修改任何框架代码即可接入。与 OpenViking 的集成方式通过 OpenViking Python HTTP SDKopenviking_sdk.SyncHTTPClient完成数据摄取add_resource、检索find、内容读取read与清理rm通过benchmark/RAG/ov.conf或 SDK 环境变量配置 OpenViking 连接存储位置由 Server 管理而非 Benchmark 进程该设计使 Benchmark 可以跟随 OpenViking Server 的最新能力如层级化资源结构检索结果的level字段决定读取全文还是摘要/概览动态演进。常见问题FAQ问已有向量索引如何跳过数据摄取阶段答在配置文件中设置skip_ingestion: true将复用现有向量索引。问可以只运行评估阶段而不重新摄取文档吗答可以。先运行--step gen生成答案再运行--step eval评估。问收到 API 密钥错误怎么办答确认配置文件中llm.api_key字段设置了有效密钥或使用api_key_env_var注入环境变量并避免将密钥提交到版本控制。问如何限制处理的查询数量答设置max_queries为目标数量如max_queries: 10流水线会在构建任务列表时按全局索引截断。问directory 和 per_file 摄取模式有什么区别答directory将整个目录视为一个资源源码中是对所有文档求公共祖先后一次性add_resource适合会话/文档集级整体摄取per_file将每个文件视为独立文档逐个摄取。问如何自定义检索指令答设置retrieval_instruction推荐格式Target_modality: xxx.\nInstruction:xxx.\nQuery:。问评估结果在哪里答在output_dir指定的目录默认为Output/{dataset_name}/experiment_{experiment_name}/。小结OpenViking 的 RAG Benchmark 提供了一条可复现、可分阶段、可扩展的 RAG 评测路线数据集下载与分层抽样保证实验可控run.py --step gen/eval/del让摄取、生成、评判、清理相互解耦VikingStoreWrapper薄封装 OpenViking SDK 使评测完全运行在真实 Server 之上而 F1 严格/软双通道召回 LLM-as-judgeLocomo 0/4 二值、通用 0–4 五档的组合则覆盖了检索质量与答案质量两个维度。通过阅读benchmark/RAG/下的适配器与核心模块你既可以快速复现官方基准数字也可以按BaseAdapter接口把自有数据集纳入同一套评测体系。该目录与 OpenViking 使用相同许可证见仓库根目录 LICENSE。【免费下载链接】OpenVikingSelf-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.项目地址: https://gitcode.com/GitHub_Trending/op/OpenViking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价