文章目录
-
- [1. 什么是 Spring AI?它解决什么问题?](#1. 什么是 Spring AI?它解决什么问题?)
- [2. Spring AI 的核心组件有哪些?](#2. Spring AI 的核心组件有哪些?)
- [3. Spring AI 和 LangChain 的区别?](#3. Spring AI 和 LangChain 的区别?)
- [4. 什么是 RAG?为什么要用 RAG?](#4. 什么是 RAG?为什么要用 RAG?)
- [5. RAG 的完整流程是什么?](#5. RAG 的完整流程是什么?)
- [6. 为什么要用向量数据库?普通数据库不行吗?](#6. 为什么要用向量数据库?普通数据库不行吗?)
- [7. Spring AI 中 VectorStore 是干嘛的?支持哪些库?](#7. Spring AI 中 VectorStore 是干嘛的?支持哪些库?)
- [8. Spring AI 如何实现流式输出(打字机效果)?](#8. Spring AI 如何实现流式输出(打字机效果)?)
- [9. Spring AI 函数调用(FunctionCall)原理?](#9. Spring AI 函数调用(FunctionCall)原理?)
- [10. 生产上 RAG 怎么优化?(高频加分题)](#10. 生产上 RAG 怎么优化?(高频加分题))
1. 什么是 Spring AI?它解决什么问题?
答:
Spring AI 是 Spring 官方推出的 AI 应用开发框架,用来简化 Java 后端接入大模型 。
它统一了对话、向量、文档、RAG 等接口,让开发者不用关心底层是 OpenAI、通义还是文心,一套代码通用,快速做企业 AI 应用。
2. Spring AI 的核心组件有哪些?
答:
- ChatModel:对话模型统一接口
- EmbeddingModel:文本转向量
- VectorStore:向量数据库抽象
- DocumentReader & TextSplitter:文档读取与切片
- PromptTemplate:提示词模板
- RAG:检索增强生成
- FunctionCall:让 AI 调用 Java 方法
3. Spring AI 和 LangChain 的区别?
答:
- Spring AI:Java 优先、轻量、Spring 生态强、工程化友好、学习成本低
- LangChain:Python 为主,功能多但复杂,Java 支持弱
4. 什么是 RAG?为什么要用 RAG?
答:
RAG = 检索增强生成。
先从知识库检索相关内容,再把内容给大模型,让它基于资料回答 。
解决大模型三大问题:
- 不知道企业私有数据
- 会胡说八道(幻觉)
- 知识过时
5. RAG 的完整流程是什么?
答:
离线构建知识库:
- 加载文档(PDF/TXT/MD)
- 文本分块 Chunk
- 向量化 Embedding
- 存入向量库
用户提问:
-
问题转向量
-
向量库做相似度检索
-
拼接上下文给大模型
-
大模型生成回答
6. 为什么要用向量数据库?普通数据库不行吗?
答:
- 普通数据库做精确匹配
- 向量数据库做语义相似度匹配
- 能理解"意思相近",而不只是关键词一样
- 是 RAG 的核心基础设施
7. Spring AI 中 VectorStore 是干嘛的?支持哪些库?
答:
VectorStore 是向量数据库的统一抽象 。
支持:
- SimpleVectorStore(内存)
- Milvus
- PGVector
- Chroma
- ElasticSearch
8. Spring AI 如何实现流式输出(打字机效果)?
答:
- 使用
StreamingChatModel - 模型返回 SSE 流式数据
- 返回
Flux<ChatResponse> - 前端逐字接收展示
9. Spring AI 函数调用(FunctionCall)原理?
答:
- 给 Java 方法加
@Tool - Spring AI 自动生成函数描述 Schema
- 把函数信息传给大模型
- 模型判断是否需要调用
- Spring AI 自动反射执行方法
- 结果返回给模型,生成最终回答
10. 生产上 RAG 怎么优化?(高频加分题)
答:
- 合理文本分块(大小、重叠)
- 调整 TopK 召回数量
- 加入重排 Rerank
- 元数据过滤,缩小检索范围
- 提示词优化,限制模型只看资料
- 向量库使用 Milvus / PGVector 提高性能