在 AI 应用中,检索增强生成(RAG) 已成为提升大模型能力的核心手段。
本文带你一步步构建一个针对 PDF 文档的语义搜索引擎,核心流程如下:
1️⃣ 文档加载:让 PDF 进入 AI 世界
LangChain 提供了 Document Loader 抽象接口,可以轻松把各种数据源导入 AI 应用。
我们用 PyMuPDF4LLMLoader 来加载 PDF:
每页会变成一个 Document 对象
metadata 会记录文件名、页码等信息
安装方法:
pip install langchain-pymupdf4llm
2️⃣ 文本切分:让语义更精准
一页的内容通常太多,不利于精准匹配。
我们用 RecursiveCharacterTextSplitter 把文档切成:
每段 1000 字符
段与段之间 200 字符重叠
保留原始位置索引(方便溯源)
这样能避免切断重要上下文,提高检索效果。
3️⃣ 生成向量:把文字变成“数学坐标”
语义搜索的核心思想是:
把文本转换为向量(Embedding),再通过向量相似度进行匹配。
这里我们使用 阿里云 DashScope 的 text-embedding-v4 模型:
生成后的向量可以直接进行相似度比较(如余弦相似度)。
4️⃣ 向量存储:用 Qdrant 管理语义信息
有了向量,就需要一个“语义数据库”来存放它们。
我们选择 Qdrant:
高效存储
支持相似度搜索
可视化 UI
创建集合、批量写入向量后,就能通过 Qdrant 的搜索功能快速找到相关内容。
5️⃣ 检索器(Retriever):让搜索更智能
LangChain 提供统一的 Retriever 接口,把底层的向量数据库封装成可直接调用的检索工具。
支持多种模式:
similarity:相似度最高的结果mmr:兼顾相关性和多样性similarity_score_threshold:设定相似度门槛
这样,你就能轻松将它与 RAG 应用结合,实现“先检索,再生成”的强大功能。
🔚 总结
https://github.com/realyinchen/AgenticRAG
课程的文字版将发布在我的知识星球:
如果你对提示工程感兴趣,可以进入微信公众号主页,进入【提示工程】专栏:

