在 AI 应用中,检索增强生成(RAG)已成为提升大模型能力的核心手段。
本文带你一步步构建一个针对 PDF 文档的语义搜索引擎,核心流程如下:
LangChain 提供了Document Loader抽象接口,可以轻松把各种数据源导入 AI 应用。
我们用PyMuPDF4LLMLoader来加载 PDF:
每页会变成一个Document对象
metadata 会记录文件名、页码等信息
安装方法:
pipinstalllangchain-pymupdf4llm
一页的内容通常太多,不利于精准匹配。
我们用RecursiveCharacterTextSplitter把文档切成:
每段1000 字符
段与段之间200 字符重叠
保留原始位置索引(方便溯源)
这样能避免切断重要上下文,提高检索效果。
语义搜索的核心思想是:
把文本转换为向量(Embedding),再通过向量相似度进行匹配。
这里我们使用阿里云 DashScope的text-embedding-v4模型:
生成后的向量可以直接进行相似度比较(如余弦相似度)。
有了向量,就需要一个“语义数据库”来存放它们。
我们选择Qdrant:
高效存储
支持相似度搜索
可视化 UI
创建集合、批量写入向量后,就能通过 Qdrant 的搜索功能快速找到相关内容。
LangChain 提供统一的Retriever接口,把底层的向量数据库封装成可直接调用的检索工具。
支持多种模式:
similarity:相似度最高的结果
mmr:兼顾相关性和多样性
similarity_score_threshold:设定相似度门槛
这样,你就能轻松将它与RAG 应用结合,实现“先检索,再生成”的强大功能。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |