整体思路
- 通过ollama下载并搭建本地大预言模型LLM。
- 通过ollama搭建embedding模型。
- 通过langchain文件加载器加载本地内容文件(PDF文件)。
- 通过langchain调用embedding模型进行向量存储和RAG检索。
- 通过langchain prompts实现提示词工程。
- 通过langchain调用LLM模型实现RAG生成,完成对本地文件的分析。
准备环境
- 服务器:CentOS Linux 7操作系统
- 开发环境:Python 3.12.0 for Windows
- 开发工具:VS Code
第一步:安装ollama,下载embedding模型和LLM模型
curl -fsSL https://ollama.com/install.sh | sh
systemctl start ollama
# 下载embedding模型
ollama pull nomic-embed-text:latest
# 下载deepseek模型
ollama pull deepseek-r1:1.5b
ollama list
systemctl status ollama

第二步:通过pip下载langchain相关包进行编码
pip install langchain langchain_core langchain_community
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
loader = PyPDFLoader("C:/Users/ethan/Desktop/IT每周汇报.pdf")
data = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(data)
from langchain_community.vectorstores import Chroma
from langchain_ollama import OllamaEmbeddings
vectorstore = Chroma.from_documents(
documents=splits,
embedding=OllamaEmbeddings(base_url="http://192.168.66.128:11434",model="nomic-embed-text")
)
from langchain_core.prompts import ChatPromptTemplate
import asyncio
retriever = vectorstore.as_retriever()
llm = OllamaLLM(base_url="http://192.168.66.128:11434",model="deepseek-r1:1.5b")
async def rag_query(question):
docs = retriever.invoke(question)
async for chunk in llm.astream(f"基于以下上下文回答:{docs}\n\n问题:{question}"):
print(chunk,end="",flush=True)
async def main(question):
await rag_query(question)
asyncio.run(main("当前项目情况总结"))
最终运行效果
