AI大模型技术面试必备

AI大模型面试题库

精选500+道高频面试题,覆盖RAG检索增强、LangChain开发、Agent智能体、Prompt工程等核心知识点,助你斩获心仪Offer

500+
面试题目
10
知识模块
95%
高频覆盖率
12.8k
社区成员
实时更新
含代码示例
面试必备
简单 RAG
#Q1

什么是RAG?RAG的主要流程是什么?

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合了信息检索和大语言模型的技术架构。主要流程包括:文档处理、向量化、存储、检索、增强和生成六个步骤。

参考答案

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合了信息检索和大语言模型的技术架构。

主要流程

  1. 文档处理:将原始文档进行解析、分块(Chunking)
  2. 向量化:使用Embedding模型将文本块转换为向量
  3. 存储:将向量存入向量数据库(如Milvus、Pinecone)
  4. 检索:用户查询时,将查询向量化并检索相似文档
  5. 增强:将检索到的文档与用户问题组合成提示词
  6. 生成:LLM基于增强后的提示词生成答案
中等 RAG
#Q2

RAG中的Rerank是什么?具体需要怎么做?

Rerank(重排序)是在初步检索后,使用更精确的模型对结果进行重新排序的技术。通过两阶段检索策略,先用高效向量检索召回Top-N,再用Rerank模型精排。

参考答案

Rerank(重排序)是在初步检索后,使用更精确的模型对结果进行重新排序的技术。

实现方法

  1. 两阶段检索:先用高效向量检索召回Top-N,再用Rerank模型精排
  2. 常用模型:BAAI/bge-reranker-base、bge-reranker-large
  3. 原理:Rerank模型计算查询与文档的语义相似度,考虑更多上下文信息
  4. 效果提升:通常能提升5-15%的检索精度

代码示例

from sentence_transformers import CrossEncoder
reranker = CrossEncoder('BAAI/bge-reranker-base')
scores = reranker.predict([(query, doc) for doc in retrieved_docs])
ranked_docs = [doc for _, doc in sorted(zip(scores, retrieved_docs), reverse=True)]
中等 RAG
#Q3

什么是混合检索?在RAG中为什么需要混合检索?

混合检索是结合多种检索方法的技术,常见组合是向量检索+关键词检索(BM25)。向量检索擅长语义相似度,BM25擅长关键词精确匹配,两者互补。

参考答案

混合检索是结合多种检索方法的技术,常见组合是向量检索+关键词检索(BM25)。

为什么需要混合检索

  1. 互补优势:向量检索擅长语义相似度,BM25擅长关键词精确匹配
  2. 覆盖不同查询类型:有些查询需要精确关键词(如人名、术语),有些需要语义理解
  3. 鲁棒性:单一检索方式可能遗漏重要信息,混合检索更可靠

实现方式

# Reciprocal Rank Fusion
vector_results = vector_search(query, top_k=20)
bm25_results = bm25_search(query, top_k=20)
scores = {}
for docs, scores_vec in vector_results:
    for rank, (doc, score) in enumerate(docs):
        scores[doc] += 1 / (k + rank + 1) * score
final_results = sorted(scores.items(), key=lambda x: x[1], reverse=True)
困难 RAG
#Q4

如何进行RAG调优后的效果评估?请给出真实应用场景中的评估标准与方法

RAG系统评估需要从检索指标和生成指标两个维度进行,常用的评估框架包括RAGAS、Trulens等。

一、评估指标体系

  • 检索指标:Recall@K、MRR@K、NDCG@K、HitRate@K
  • 生成指标:BLEU、ROUGE、F1、BERTScore
  • 端到端指标:RAGAS(包含Faithfulness、Answer Relevance、Context Relevance)

二、常用评估框架

  • RAGAS:专门针对RAG系统的评估框架
  • Trulens:提供多维度评估和可视化
  • 人工评估:专家评估答案准确性、相关性、完整性

三、实战评估代码

from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_relevancy
result = evaluate(
    dataset=test_dataset,
    metrics=[faithfulness, answer_relevancy, context_relevancy]
)
简单 RAG
#Q5

RAG中的分块(Chunking)是什么?为什么需要分块?常见的分块策略有哪些?

分块是将长文档切分成较小的文本块,便于向量化和检索。常见策略包括固定长度分块、递归字符分块、语义分块等。

什么是分块

将长文档切分成较小的文本块,便于向量化和检索。

为什么需要分块

  • 大语言模型的上下文窗口有限
  • 小块能提高检索精度
  • 减少无关信息干扰

常见策略

  1. 固定长度分块:按字符数或Token数切分(如512/1024 tokens)
  2. 递归字符分块:按段落、句子递归切分,保持语义完整
  3. 语义分块:使用模型识别语义边界
  4. 标题/章节分块:按文档结构(标题层级)切分
简单 LangChain
#Q6

LangChain的核心组件有哪些?

LangChain由Models、Prompts、Chains、Agents、Memory、Tools、Indexes、Callbacks八大核心组件构成。

参考答案

LangChain由以下核心组件构成:

  • Models(模型):支持多种LLM接口(OpenAI、Anthropic、本地模型等)
  • Prompts(提示词):Prompt模板、输出解析器
  • Chains(链):将组件串联执行,如LLMChain、SequentialChain
  • Agents(智能体):让LLM自主决策和调用工具
  • Memory(记忆):保存对话历史,支持多种存储方式
  • Tools(工具):自定义工具,如搜索、数据库查询等
  • Indexes(索引):文档加载器、文本分割器、向量存储
  • Callbacks(回调):监控和日志记录
中等 LangChain
#Q7

LangChain中Chain和Agent的区别是什么?什么时候用Chain,什么时候用Agent?

Chain按预定义顺序执行,适合固定流程;Agent由LLM自主决策下一步,灵活度高。固定问答用Chain,多工具协作用Agent。

核心区别

  • Chain:按预定义顺序执行,适合固定流程
  • Agent:LLM自主决策下一步做什么,灵活度高

选择建议

场景推荐
固定问答流程Chain
需要多工具协作Agent
简单LLM调用Chain
复杂推理任务Agent
需要对话记忆两者皆可
中等 Agent
#Q8

什么是Agent?Agent的核心能力有哪些?

Agent是能够感知环境、做出决策并执行动作的智能系统。核心能力包括规划、推理、工具使用、记忆和反思。

参考答案

Agent是能够感知环境、做出决策并执行动作的智能系统。

核心能力

  • 规划(Planning):将复杂任务分解为子任务
  • 推理(Reasoning):基于现有知识进行逻辑推理
  • 工具使用(Tool Use):调用外部工具扩展能力
  • 记忆(Memory):保存和检索历史信息
  • 反思(Reflection):评估自身行为并调整策略
中等 Agent
#Q9

ReAct模式的原理是什么?请用代码实现一个ReAct Agent

ReAct = Reasoning + Acting,让Agent交替进行推理和动作执行,通过思考-行动-观察的循环来解决复杂问题。

ReAct原理

ReAct = Reasoning + Acting,让Agent交替进行推理和动作执行。

代码实现

from langchain.agents import AgentType, initialize_agent, Tool
from langchain_openai import ChatOpenAI

# 定义工具
tools = [
    Tool(name="Search", func=search_func, description="搜索最新信息"),
    Tool(name="Calculator", func=calc_func, description="数学计算")
]

# 初始化Agent
llm = ChatOpenAI(model="gpt-4", temperature=0)
agent = initialize_agent(
    tools, 
    llm, 
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

# 执行任务
result = agent.run("刘德华出生于哪一年?今年多大?")
简单 Prompt
#Q10

如何设计一个好的Prompt?有哪些基本原则?

好的Prompt设计遵循CRISPE框架,包括设定角色、提供背景、明确指令、指定风格、要求实验五个步骤。

CRISPE框架

  • Capacity/Role:设定角色身份
  • Insight:提供背景信息
  • Statement:明确任务指令
  • Personality:设定输出风格
  • Experiment:要求多个答案

实用技巧

  • 使用清晰、具体的指令
  • 提供示例(Few-shot)
  • 分解复杂任务为步骤
  • 指定输出格式
  • 考虑边界情况和错误处理
中等 LLM基础
#Q11

Transformer的Attention机制原理是什么?为什么它比RNN更适合处理长序列?

Attention通过计算Query与Key的相似度,得到Value的加权求和,实现对输入序列中相关部分的"关注"。

Attention原理

Attention通过计算Query与Key的相似度,得到Value的加权求和,实现"关注"输入序列中的相关部分。

Attention(Q, K, V) = softmax(QK^T / √d_k) × V
# Q(Query):当前位置的查询
# K(Key):所有位置的键
# V(Value):所有位置的值

为什么比RNN更好

  • 并行计算:RNN必须顺序计算,Transformer可并行
  • 长距离依赖:RNN对远距离信息衰减严重,Attention直接建模任意距离
  • 可解释性:Attention权重可视化,便于理解
困难 LLM基础
#Q12

SFT、RLHF、LoRA分别是什么?有什么区别?

SFT是监督微调,RLHF是人类反馈强化学习,LoRA是低秩适配。三种大模型微调方法各有适用场景和成本差异。

概念解释

  • SFT(监督微调):使用标注数据直接训练模型,方法简单但需要大量数据
  • RLHF(人类反馈强化学习):训练Reward模型,再用PPO算法优化策略
  • LoRA(低秩适配):冻结原模型权重,只训练低秩矩阵,大幅降低训练成本

如何选择

方法适用场景成本
SFT有大量标注数据
RLHF需要对齐人类偏好很高
LoRA资源有限,快速微调