乐于分享
好东西不私藏

windows电脑搭建本地大模型,尝试高效写论文

windows电脑搭建本地大模型,尝试高效写论文
第一部分:搭建Ollama(本地模型)
1.1. 前置条件(所有系统通用)
硬件:满足「显存≥6GB(NVIDIA 独显)/ 内存≥16GB」(纯 CPU 也能跑,但速度慢);
系统:Windows:Windows 10/11 64 位;
助手:豆包
1.2. 下载安装包
官网下载:https://ollama.com/download/windows(自动识别系统,下载.exe 安装包,约 169MB);
1.3. 安装Ollama
双击下载的ollama-windows-amd64.exe,无需手动配置,点击「Next」「Install」,等待几 分钟完成安装;
安装完成后,Ollama 会自动注册为系统服务(后台运行,无需手动启动);
1.4. 安装并运行Qwen-7B
1.4.1.在cmd界面输入:ollama run qwen:7b

下载完毕后的界面如下:(已经可以开始对话)

1.5退出Qwen-7B的命令: /bye

1.6. 在桌面新建一个文本文档,重命名为“启动千问7B.bat

注意后缀是 .bat,不是 .txt

在bat文档里输入以下代码:

@echo off 

title Qwen-7B 

ollama run qwen:7b pause 

1.7. 其余Ollama 命令

按下Win+R,输入cmd打开命令提示符;

输入ollama -v,显示版本号(如ollama version is 0.18.2)即安装成功;

输入ollama list,显示查看本地已下载的模型

ollama run 模型名 启动指定模型(如 ollama run glm:7b)

ollama pull 模型名 仅下载模型不运行(如 ollama pull llama2:7b)

ollama rm 模型名 删除不需要的模型(释放硬盘空间)

ollama ps                 查看正在运行的模型进程

ollama stop 模型名 停止运行中的模型

第二部分:安装FAISS(本地向量库)

说明:FAISS是适配本地 RAG 论文模型
2.1 先安装python 
1、优先下载 3.10 版本(https://www.python.org/downloads/release/python-31011/
不建议3.12+,FAISS 暂未完全适配
2、如果下载的地址无法用(旧版本的镜像会被删除)
2.1.1安装注意点
安装时勾选「Add Python 3.10 to PATH」。
2.1.2 安装完毕后确认
已配置Python 环境变量(cmd 输入python -V能显示版本即正常),如下图

2.2 安装FAISS

说明:AI 专用的超级搜索引擎

FAISS = 一款专门用来做「向量检索」的高速搜索工具作用:从海量数据里,以毫秒级速度找到和你问题最相似的内容 

简单比喻

FAISS = AI 的图书馆管理员

你问问题 → 管理员瞬间从百万本书里找到对应页码

再把内容交给 AI 整理成答案

2.2.1  选择cpu版本
CPU 版安装(99% 场景够用,新手首选)
CPU 版无需独立显卡,适配所有 Windows 电脑,满足文献 RAG 检索需求
在cmd界面输入下面三行代码,最终显示FAISS CPU版安装成功!
pip install faiss-cpu==1.7.4
pip install numpy==1.26.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
python -c "import faiss; print('FAISS CPU版安装成功!')"
第三部分 搭建RAG(检索增强生成)
说明:RAG检索增强生成
Retrieval-Augmented Generation
Retrieval 检索:先在你的文档、知识库、PDF 里搜索相关内容。
Augmented 增强:把搜到的资料喂给 AI,给它补充知识。
Generation 生成:AI 结合资料,再给你生成准确、不胡说的回答。
·  普通 AI:靠自己记忆答题 → 容易瞎编
·  RAG AI:先翻你的课本 / 笔记 → 找到对应段落 → 再整理答案→ 更准、更专业、不会乱编
核心是:把道佛文献变成本地可检索的向量库,提问时先从向量库中找相关内容,再让模型基于这些内容写论文,精准且无幻觉。
简单说:先检索本地文献,再生成内容,彻底解决模型编造假引文的问题。
·  FAISS:负责快速检索、查资料
·  LangChain:负责把检索和大模型串起来
·  RAG:就是这套“先查再答” 的整体方案
3.1  在电脑F盘上新建一个文件夹“daofo_literature”
说明:该文件夹用于存放已经整理好的文献
将道佛文献(《道藏》、专著、核心期刊论文等整理为纯文本/ TXT/PDF(扫描件用 OCR 转文字)。
3.2 RAG 核心依赖 完整安装步骤
(Windows + Python 3.10 + FAISS 1.7.4)
3.2.1先卸载冲突包(避免报错)
pip uninstall -y numpy faiss-cpu langchain pypdf chromadb sentence-transformers

3.2.2 再安装 RAG 全套依赖

pip install langchain==0.1.10 pypdf==4.1.0 sentence-transformers==2.7.0 python-dotenv==1.0.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
验证安装:python -c "import langchain, faiss, sentence_transformers; print('依赖安装成功')"
第四部分 构建本地向量库(把道佛文献入库)
4.1  知网下载的论文入库
4.1.1  新建local_rag_chat.py文件
复制以下代码:
# 导入核心库
import faiss
import numpy as np
# ====================== 修复 1:替换 langchain 导入 ======================
from langchain_community.document_loaders import PyPDFLoader, TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from sentence_transformers import SentenceTransformer
# ====================== 1. 配置参数(你只需要改这里!)======================
LITERATURE_PATH = "f:\\daofo_literature" # 你的知网下载论文存放的文件夹
VECTOR_DB_PATH = "f:\\daofo_rag_db\\faiss_index.bin" # 向量库保存路径
EMBEDDING_MODEL = "all-MiniLM-L6-v2"
# ====================== 2. 加载并拆分文献 ======================
def load_and_split_docs():
docs = []
# 加载PDF  (每次根据需要修改  文件名)
try:
pdf_loader = PyPDFLoader(f"{LITERATURE_PATH}\\明清時期全真道在河西走廊的傳播-程思尹.pdf")
docs.extend(pdf_loader.load())
except:
print("PDF加载失败")
# 拆分文本
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", "。", ","]
)
split_docs = text_splitter.split_documents(docs)
return split_docs
# ====================== 3. 构建向量库 ======================
def build_faiss_db():
# ====================== 修复 2:本地模型 + 禁止联网 ======================
import os
os.environ["TRANSFORMERS_OFFLINE"] = "1"  # 强制本地模式
os.environ["HF_HUB_OFFLINE"] = "1"
# 加载模型
embed_model = SentenceTransformer(EMBEDDING_MODEL)
split_docs = load_and_split_docs()
if len(split_docs) == 0:
print("无有效文献")
return
# 生成向量
doc_texts = [doc.page_content for doc in split_docs]
doc_embeddings = embed_model.encode(doc_texts, convert_to_numpy=True).astype('float32')
# 创建FAISS库
dim = doc_embeddings.shape[1]
index = faiss.IndexFlatL2(dim)
index.add(doc_embeddings)
# 保存
faiss.write_index(index, VECTOR_DB_PATH)
metadata = [{"text": doc.page_content, "source": doc.metadata["source"], "page": doc.metadata.get("page", 0)} for doc in split_docs]
np.save(f"{LITERATURE_PATH}\\doc_metadata.npy", metadata)
print("向量库构建完成!")
if __name__ == "__main__":
build_faiss_db()
4.1.2 说明
1、修改代码中LITERATURE_PATH为你的文献实际路径;
2、每一篇论文,修改文件名
3、等待完成(5 篇文献约 1 分钟),
4、运行结束后会生成faiss_index.bin(向量库)和doc_metadata.npy(文献元数据)。
4.1.3 运行 
CMD 中进入代码所在文件夹,
执行:python build_local_rag_db.py
结果如下图
第五部分 本地RAG 对话
说明:检索+ 生成论文内容
5.1 新建local_rag_chat.py文件,复制以下代码: 
import faiss
import numpy as np
from sentence_transformers import SentenceTransformer
# 旧的(删掉)
# from langchain.llms import Ollama
# 新的(贴上)
from langchain_ollama import OllamaLLM
# ====================== 1. 配置参数(改这里!)======================
VECTOR_DB_PATH = "f:\\daofo_rag_db\\faiss_index.bin" # 向量库路径
METADATA_PATH = "f:\daofo_literature\doc_metadata.npy" # 元数据路径
EMBEDDING_MODEL = "all-MiniLM-L6-v2"
OLLAMA_MODEL = "qwen:7b" # 本地Ollama模型(也可填daofo-paper)
# ====================== 2. 加载本地资源 ======================
# 加载向量库
index = faiss.read_index(VECTOR_DB_PATH)
# 加载元数据
metadata = np.load(METADATA_PATH, allow_pickle=True).tolist()
# 加载向量化模型
embed_model = SentenceTransformer(EMBEDDING_MODEL)
# 加载Ollama本地模型
# 旧的(删掉)
# llm = Ollama(model=OLLAMA_MODEL, base_url="http://localhost:11434")
# 新的(贴上)
llm = OllamaLLM(model=OLLAMA_MODEL, base_url="http://localhost:11434")
# ====================== 3. 本地检索 + 模型生成 ======================
def rag_chat(question):
# 步骤1:提问向量化(本地)
query_embedding = embed_model.encode([question], convert_to_numpy=True).astype('float32')
# 步骤2:检索相似文献(前3条)
k = 3
distance, idx = index.search(query_embedding, k)
# 步骤3:整理检索结果(拼接为上下文)
context = ""
sources = []
for i in range(k):
if distance[0][i] < 1.0:  # 过滤相似度太低的结果(阈值可调整)
doc_meta = metadata[idx[0][i]]
context += f"\n【文献片段】:{doc_meta['text']}\n【来源】:{doc_meta['source']} 页码:{doc_meta['page']}\n"
sources.append(f"- {doc_meta['source']}(页码:{doc_meta['page']})")
if context == "":
print("未检索到相关文献,直接生成(慎用)")
prompt = question
else:
# 步骤4:构建提示词(结合检索结果)
prompt = f"""你是宗教学博士,专注道教/佛教研究,仅依据以下检索到的本地文献作答:
{context}
写作要求:
1. 严格学术化,文风严谨,无口语化表述;
2. 所有观点必须引用上述文献,标注「作者-来源-页码」;
3. 禁止编造任何未在文献中出现的内容;
4. 回答问题:{question}"""
# 步骤5:调用本地Ollama模型生成内容
response = llm.invoke(prompt)
# 步骤6:输出结果
print("=== 论文内容 ===")
print(response)
print("\n=== 引用来源(本地文献)===")
if len(sources) > 0:
for s in sources:
print(s)
else:
print("无相关文献引用")
# ====================== 4. 运行示例 ======================
if __name__ == "__main__":
# 替换为你的论文写作问题
paper_question = "分析明清时期武当山全真道,聂新的相关观点,写1500字论述"
rag_chat(paper_question)
5.2 环境的命令
pip install -U langchain-community
pip install -U langchain-ollama
5.3 运行
1、确保 Ollama 已启动(ollama run qwen:7b可先测试模型);

2、 CMD 中执行:python local_rag_chat.py

3、等待生成(1500 字约 1-2 分钟),输出「论文内容 + 引用来源」。

实验成果,不是理想的论文整理大模型。

2、 CMD