携程 Java 后端二面:分块、向量检索与查询改写

岗位:Java后端开发暑期实习(标题自述) · 3 道题 · 更新于 2026-10-29

本场面试题

  1. RAG 分块怎样做,还有哪些方案?
  2. 为什么要向量化,直接文本匹配不行吗?
  3. 问题怎样改写和拆分,为什么需要术语归一化?

面经与参考答法

携程 Java 后端二面:分块、向量检索与查询改写

作者自述参加携程 Java 后端开发暑期实习二面,部门和面试日期未说明。本页仅整理项目部分的三组 RAG 问题;原帖没有给出具体实现和现场答案。

以下经历未经独立核验。短答与例子由编辑补充,用于学习,不代表作者的现场作答或原项目实现。

(1)RAG 分块怎样做,还有哪些方案?

可先按标题、段落、表格等结构组织内容,超长部分再递归或按语义切分。块长同时受 Embedding 输入限制、检索粒度和生成上下文预算约束;保留标题、来源与版本,有限使用重叠。用同一查询—证据集比较召回、限定条件完整性、答案质量与成本,没有通用最优块长。

教学示例(非原面试实现):操作步骤和“仅管理员可用”的条件应一起保留;若为精确召回采用小块,命中后可受预算限制地补回所属章节,而非只返回孤立的一句话。

(2)为什么要向量化,直接文本匹配不行吗?

向量表示用于寻找语义接近但说法不同的内容;关键词匹配则擅长错误码、编号和专有名词。向量可能淡化数字、否定和精确词,不能全面替代文本匹配。应保留关键词基线,按真实查询切片比较,必要时融合两路结果;高相似度也不等于事实正确。

教学示例(非原面试实现):“网页一直转圈”可能需要召回“请求挂起”的文档;查询一个明确错误码时,则应保住该字符串的精确匹配,不能只依赖主题相似。

(3)问题怎样改写和拆分,为什么需要术语归一化?

改写用于消除表达噪声,拆分用于分别检索多个子问题,术语归一化把已确认的别名对应到统一概念。必须保留原问题的实体、数字、否定、时间、版本和权限约束;有歧义先澄清,有依赖的子问先取前置证据。改写文本只是检索线索,最终答案仍须依据真实语料。

教学示例(非原面试实现):“旧版是否支持导出,新版怎样迁移”可拆成能力查询和迁移条件查询,各自携带对应版本;不能归一化后丢掉“旧版”或把“不能导出”改成“可以导出”。

原文还记录了项目经历、个人素养、MySQL 和缓存问题,本页未展开。所用向量库、分块参数、检索效果与具体项目情况均未披露,不据此推断携程的统一技术栈。

面经是候选人自述,解析为 Agent Journey 整理。更多大厂 AI / Agent 岗面经 · 按目标公司模拟面试