那么,今天我们基于这一套全栈 AI 应用开发框架开发一个简单的 RAG 系统。
创建 Next 项目
首先,使用 npx create-next-app@latest 根据提示完成 Next 项目的创建:
# 创建 Next 项目
npx create-next-app@latest
创建好项目之后,在 src/app 目录下新建 rag 目录,本次 demo 的代码都将放在这里。
知识库构建
接下来,我们将构建知识库,主要目标是将准备好的 pdf 通过向量化存到向量数据库中,以便后续的检索。
由于本次 RAG 系统的开发都要依赖 LangChain 框架,所以我们先在项目中安装 LangChain 框架和核心依赖:
# LangChain 框架和核心依赖
npm install langchain @langchain/core
文档加载
LangChain 的 DocumentLoaders[1] 提供了种类丰富的文档加载器,可加载文件系统的文件也可以加载线上文件,包括 csv、docx、pdf、pptx、html、github、youtube等等。
现在我们使用 PDFLoader[2] 来实现 pdf 的数据加载。
先安装所需的依赖包:
# @langchain/community:包含第三方集成,这些集成实现了 LangChain Core 中定义的基本接口,如:文档加载、文档嵌入、向量数据库等等
# pdf-parse:读取 pdf 文本
npm install @langchain/community pdf-parse
然后添加加载 pdf 的代码:
import { PDFLoader } from'@langchain/community/document_loaders/fs/pdf';
const loader = newPDFLoader('public/example.pdf', { splitPages: false });
const docs = await loader.load();
文档分割
加载完成后,由于加载的文档可能过长,不适合模型的上下文窗口,需要将文档分割成合适的大小。
LangChain 提供了 TextSplitter[3] 组件来实现文档分割:
import { RecursiveCharacterTextSplitter } from'langchain/text_splitter';
// chunkSize:分割文档的长度
// chunkOverlap:分割文档间的重叠长度
const textSplitter = newRecursiveCharacterTextSplitter({
chunkSize: 1000,
chunkOverlap: 200,
});
const texts = await textSplitter.splitDocuments(docs);
文档向量嵌入
接下来我们需要对分割后的文本块进行向量嵌入,然后使用 Chroma 向量数据库存储。
向量模型使用 ollama 安装的 nomic-embed-text 模型,可用 ollama run nomic-embed-text进行下载和运行,完整的代码如下:
import {
Chroma,
ChromaLibArgs,
} from'@langchain/community/vectorstores/chroma';
import { ChatOllama, OllamaEmbeddings } from'@langchain/ollama';
import { EmbeddingsInterface } from'@langchain/core/embeddings';
// 初始化 embeddings 函数
exportfunctioninitOllamaEmbeddings(model = 'nomic-embed-text') {
returnnewOllamaEmbeddings({ model });
}
// 初始化向量数据库
exportfunctioninitChroma(
embeddings: EmbeddingsInterface = initOllamaEmbeddings(),
args: ChromaLibArgs = {
collectionName: 'rag_collection',
url: 'http://localhost:8000',
}
) {
returnnewChroma(embeddings, args);
}
// 初始化向量数据库
const chromadb = initChroma();
// 保存文本块
const documents = await chromadb.addDocuments(texts);
到此就构建好了一个简单的知识库。
RAG 系统构建
在创建好知识库之后,接下来就可以开始构建一个基础的 RAG 系统。该系统包括检索器与生成器两部分,具体工作流程如下:对于用户输入的问题,检索器先搜索与该问题相关的文档,接着将检索到的文档与初始问题一起传递给生成器,即大语言模型,最后将模型生成的答案返回给用户。
检索器创建
我们先基于 VectorStoreRetriever 创建检索器,利用向量相似度进行检索。
// 初始化向量数据库
const chromadb = initChroma();
// 创建检索器
const retriever = chromadb.asRetriever();
生成器创建
接下来我们创建生成器,这里我们使用 Ollama 安装的 deepseek-r1:14b 大模型作为生成器。
import { ChatOllama } from'@langchain/ollama';
exportfunctioninitOllamaLLM(model = 'deepseek-r1:14b') {
returnnewChatOllama({ model });
}
// 创建生成器(初始化大模型)
const ollamaLLM = initOllamaLLM()
然后再设置提示模版:
// 设置提示模版
const prompt = PromptTemplate.fromTemplate(
'你是负责回答问题的助手。使用以下检索到的上下文片段来回答问题。如果你不知道答案,就说你不知道。\n\n上下文:{context}\n\n问题:{question}\n\n回答:'
);
RAG 链生成答案
最后我们通过 RAG 链将检索器和生成器整合在一起,这里可以使用 LangChain 表达式语言(LangChain Execution Language,LCEL)来方便快捷地构建一个链,将检索到的文档、构建的输入 Prompt 以及模型的输出组合起来。
// 使用 LCEL 构建 RAG 链
const ragChain = RunnableSequence.from([
{
context: retriever.pipe((docs) => {
// 文档列表使用 \n\n 拼接为字符串
return docs.map((doc) => doc.pageContent).join('\n\n');
}),
question: newRunnablePassthrough(),
},
prompt,
ollamaLLM,
newStringOutputParser(),
]);
// 使用 RAG 链生成答案
const answer = await ragChain.invoke(question);
项目代码
代码:https://github.com/laixiangran/ai-learn
启动项目之后在浏览器输入 http://localhost:3000/rag 即可访问该 RAG 系统,然后在输入框输入问题:互联网的人才缺口有哪些

也可以通过访问 http://localhost:3000/rag/generate?question=互联网的人才缺口有哪些

通过以上步骤,我们就完成了一个基础 RAG 系统的搭建,其中借助于 LangChain 提供了一系列强大的工具和组件,使得构建和整合检索与生成过程变得简单而高效。而借助 Ollama 我们也能够在本地部署大语言模型和向量模型,这让我们可以以较小的资源进行 AI 的开发学习实践。

大模型算是目前当之无愧最火的一个方向了,算是新时代的风口!有小伙伴觉得,作为新领域、新方向人才需求必然相当大,与之相应的人才缺乏、人才竞争自然也会更少,那转行去做大模型是不是一个更好的选择呢?是不是更好就业呢?是不是就暂时能抵抗35岁中年危机呢?
答案当然是这样,大模型必然是新风口!
那如何学习大模型 ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。但是具体到个人,只能说是:
最先掌握AI的人,将会比较晚掌握AI的人有竞争优势。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
但现在很多想入行大模型的人苦于现在网上的大模型老课程老教材,学也不是不学也不是,基于此我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近100余次后,终于把整个AI大模型的学习路线完善出来!

在这个版本当中:
您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型路线+学习教程已经给大家整理并打包分享出来, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

一、大模型经典书籍(免费分享)
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

二、640套大模型报告(免费分享)
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

三、大模型系列视频教程(免费分享)

四、2025最新大模型学习路线(免费分享)
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1阶段:启航篇丨极速破界AI新时代
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

L2阶段:攻坚篇丨RAG开发实战工坊
L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3阶段:跃迁篇丨Agent智能体架构设计
L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

L4阶段:精进篇丨模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

L5阶段:专题集丨特训篇 【录播课】

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方二维码,免费领取

1690

被折叠的 条评论
为什么被折叠?



