Harvey AIAI EngineerLegal AIRAG面试Citation Coding面试真题

Harvey AI Engineer 面试准备指南 2026:Legal AI、Citation Tagging Coding 与 Vault RAG 架构

2026 年法律 AI 独角兽 Harvey 的 AI Engineer 面试独家拆解:包含现场高频 Citation 标注 Coding 真题手写、Harvey Vault 高精度 RAG 系统设计与法律领域 Evals 评测体系。

Interview Coach Pro · · 20 分钟阅读

目标岗位:Harvey AI Engineer / Applied AI Software Engineer
核心业务:法律与专业服务 AI 独角兽(OpenAI 重点投资),打造 Harvey Vault、Review Table 等智能合同与法条分析工具。
面试特色:极其注重代码的真实鲁棒性(非刷题套路)、对大模型引用出处(Citations)的精确控制与海量法律文档的高召回 RAG 设计。


2026 Harvey AI Engineer 面试全流程

┌─────────────────────────────────────────────────────────────────┐
│                     1. Recruiter Screen (30 min)                │
└────────────────────────────────┬────────────────────────────────┘

┌────────────────────────────────▼────────────────────────────────┐
│               2. Technical Screen (60-75 min)                   │
│      - 经典 Citation Tagging & Source Highlighting 实战 Coding   │
└────────────────────────────────┬────────────────────────────────┘

┌────────────────────────────────▼────────────────────────────────┐
│                 3. Virtual Onsite (3-4 Rounds)                  │
│  ├─ Round 1: Coding Part 2 (复杂重叠高亮与频次权重排序)        │
│  ├─ Round 2: System Design (Harvey Vault / Review Table RAG)    │
│  ├─ Round 3: Project Deep Dive (深入复盘大模型应用落地与踩坑)   │
│  └─ Round 4: Values & Engineering Culture                      │
└─────────────────────────────────────────────────────────────────┘

现场核心真题与代码实现

1. Coding 轮真题:文本引用高亮与排序标注器(Citation Highlighter)

这是 Harvey 面试中最具代表性的实战编程题,分为两问递进:

题目描述:

Part 1:给定大模型生成的文本 text 和源文档引用片段列表 sources,找出文本中所有精确匹配源片段的位置,并用 <yellow>...</yellow> 标签高亮包裹(要求词级别匹配,且重叠区域需合并为一个标签)。
Part 2:在高亮标签后追加 [source_index] 引用序号。如果同一个高亮区域由多个 source 重叠组成,则按各个 source 在全篇文本中出现的总频次降序排列追加,频次相同则按 source 索引升序排列。

完整通过代码实现:

from typing import List, Tuple
import re

def highlight_and_cite(text: str, sources: List[str]) -> str:
    """
    Harvey 经典 Citation 算法真题
    """
    # 统计每个 source 在全篇文本中作为独立子串出现的总频次
    source_counts = []
    for idx, s in enumerate(sources):
        # 简单字面出现统计
        count = len(re.findall(re.escape(s), text))
        source_counts.append((count, idx, s))

    # 寻找所有匹配区间 (start, end, source_index)
    intervals: List[Tuple[int, int, int]] = []
    for idx, s in enumerate(sources):
        for m in re.finditer(re.escape(s), text):
            intervals.append((m.start(), m.end(), idx))

    if not intervals:
        return text

    # 按起始位置排序区间
    intervals.sort(key=lambda x: (x[0], x[1]))

    # 合并重叠区间,并归并落在该区间的 source_indices
    merged = []
    cur_start, cur_end, cur_sources = intervals[0][0], intervals[0][1], {intervals[0][2]}

    for start, end, s_idx in intervals[1:]:
        if start <= cur_end:
            cur_end = max(cur_end, end)
            cur_sources.add(s_idx)
        else:
            merged.append((cur_start, cur_end, cur_sources))
            cur_start, cur_end, cur_sources = start, end, {s_idx}
    merged.append((cur_start, cur_end, cur_sources))

    # 构造最终字符串
    result = []
    last_idx = 0

    for start, end, s_set in merged:
        # 添加未匹配前缀
        result.append(text[last_idx:start])
        matched_str = text[start:end]

        # 排序 source indices: 频次降序 -> 原始 index 升序
        sorted_sources = sorted(
            list(s_set),
            key=lambda idx: (-source_counts[idx][0], source_counts[idx][1])
        )
        citation_tags = "".join(f"[{idx}]" for idx in sorted_sources)

        # 包装高亮与引用
        result.append(f"<yellow>{matched_str}</yellow>{citation_tags}")
        last_idx = end

    result.append(text[last_idx:])
    return "".join(result)

2. System Design:Harvey Vault 法律文档 RAG 系统设计

考题背景

Harvey Vault 是律师事务所存储海量法律案件、合同样本与判决书的专有知识库。律师输入自然语言 Prompt 后,系统需要秒级从数千万份文档中召回相关段落,并让大模型生成带精确法条出处的分析报告。

核心设计考点:

  1. 零幻觉容忍度(Zero Hallucination Tolerance):法律场景下一个错误的判例引用可能导致灾难性后果。必须采用 Strict Extraction RAG,模型回答中每一个法条必须严格对应召回文档的 Chunk ID。
  2. 多层级法律文档分块(Hierarchical Chunking):法律条文具有严密的层次结构(Chapter -> Section -> Clause)。分块必须保留“父条款”的上下文元数据(Parent Document Metadata)。
  3. 混合检索与 Cross-Encoder 重排
    • 法条编号(如 35 U.S.C. § 101)需靠 BM25 精确命中。
    • 案情描述(如“合同不可抗力条款纠纷”)靠 Dense Vector 检索。
    • 最终由 Cross-Encoder 统一重排打分。

相关推荐阅读


💡 需要针对 Harvey 等 AI 独角兽的面试辅导?

I

关于作者

Interview Coach Pro 是 Interview Coach Pro 的技术面试教练,长期辅导在美国求职的中文候选人准备 SDE、System Design、Behavioral、Data Engineer 和 ML Engineer 面试。

本文基于匿名面试复盘、公开岗位要求和一对一辅导中的高频问题整理,发布前会检查内容结构、术语准确性和可操作性。你也可以查看我们的 辅导团队辅导方法

相关面试辅导

如果你正在准备类似面试,可以直接从下面的专项辅导开始。

准备好拿下下一次面试了吗?

获取针对你的目标岗位和公司的个性化辅导方案。

联系我们