news 2026/4/27 21:16:13

搭建Ollama并运行qwen,简单RAG实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
搭建Ollama并运行qwen,简单RAG实现

1、wsl环境中安装ollama

curl -fsSL https://ollama.com/install.sh | sh

2、启动

ollama serve

3、拉取模型

# 拉取模型(此过程会下载约4-5GB的数据) ollama pull qwen2.5:7b # 推荐:中文能力强,综合性能优秀 # 或者 ollama pull llama3.2:7b # 备选:国际主流模型
ollama run qwen2.5:7b

4、安装python

WSL2中安装Python的步骤

# 1. 更新包列表
sudo apt update

# 2. 安装Python3和pip
sudo apt install python3 python3-pip -y

# 3. 验证安装
python3 --version
pip3 --version

# 4. (可选)设置python3为默认python命令
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1

如果wsl是ubantu 要用虚拟环境

# 1. 创建虚拟环境(在用户目录下)
python3 -m venv ~/ai_venv

# 2. 激活虚拟环境
source ~/ai_venv/bin/activate
# 激活后,命令行提示符前会出现 (ai_venv)

# 3. 在虚拟环境中安装包(不会影响系统)
pip install --upgrade pip
pip install langchain langchain-community chromadb pypdf

# 4. 运行你的脚本(确保在虚拟环境中)
python /mnt/f/tmp/test_rag.py

# 5. 退出虚拟环境(完成后)
deactivate

安装旧版lanchain

# 1. 安装兼容的旧版本 pip uninstall langchain langchain-community langchain-core langchain-classic langchain-text-splitters -y pip install "langchain==0.1.0" "langchain-community==0.0.10" # 2. 验证 python -c "from langchain.chains import RetrievalQA; from langchain_community.llms import Ollama; print('✅ 所有关键模块导入成功!')" # 3. 现在运行你的测试脚本 python /mnt/f/tmp/test_rag.py

编辑脚本

# test_rag.py - 带错误处理的完整版 import sys print("=== RAG系统测试 ===") # 1. 导入必要的库 try: from langchain.chains import RetrievalQA from langchain_community.llms import Ollama from langchain_community.vectorstores import Chroma from langchain_community.embeddings import OllamaEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.document_loaders import TextLoader print("✅ 所有库导入成功") except ImportError as e: print(f"❌ 导入失败: {e}") sys.exit(1) # 2. 连接本地Ollama(对话模型) try: llm = Ollama(base_url="http://localhost:11434", model="qwen2.5:7b") print("✅ 已连接本地对话模型 (qwen2.5:7b)") except Exception as e: print(f"❌ 连接Ollama失败: {e}") sys.exit(1) # 3. 尝试不同的嵌入模型 embedding_models = ["all-minilm", "nomic-embed-text", "mxbai-embed-large", "qwen2.5:7b"] embeddings = None for model in embedding_models: try: print(f"尝试使用嵌入模型: {model}") embeddings = OllamaEmbeddings(base_url="http://localhost:11434", model=model) # 简单测试 test_embed = embeddings.embed_query("test") print(f"✅ 嵌入模型 '{model}' 可用") break except Exception as e: print(f" 模型 '{model}' 不可用: {str(e)[:80]}...") continue if embeddings is None: print("❌ 所有嵌入模型都不可用") print("请先安装一个嵌入模型:") print(" ollama pull all-minilm # 推荐,轻量快速") print(" ollama pull nomic-embed-text") sys.exit(1) # 4. 创建测试文档 insurance_text = """ 【健康保险条款示例】 第一条 保险责任 在本合同有效期内,被保险人因遭受意外伤害或疾病,在符合本合同约定的医院进行治疗,本公司按下列约定给付保险金: 一、住院医疗保险金:被保险人需支付免赔额人民币5000元,免赔额以上部分按90%比例报销,年度累计给付以20万元为限。 二、重大疾病保险金:一次性给付人民币30万元。 """ with open("sample_policy.txt", "w", encoding="utf-8") as f: f.write(insurance_text) # 5. 加载、分割文档 try: loader = TextLoader("sample_policy.txt") documents = loader.load() text_splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=50) texts = text_splitter.split_documents(documents) print(f"✅ 文档处理完成,分割为 {len(texts)} 个片段") except Exception as e: print(f"❌ 文档处理失败: {e}") sys.exit(1) # 6. 创建向量库 try: vectorstore = Chroma.from_documents(texts, embeddings, persist_directory="./insurance_db") print("✅ 向量知识库构建完成") except Exception as e: print(f"❌ 创建向量库失败: {e}") sys.exit(1) # 7. 创建RAG问答链 try: qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=vectorstore.as_retriever(search_kwargs={"k": 2}), chain_type="stuff" ) print("✅ RAG问答链创建完成") except Exception as e: print(f"❌ 创建问答链失败: {e}") sys.exit(1) # 8. 测试问答 print("\n" + "="*50) print("开始问答测试") print("="*50) test_questions = [ "我这份合同的免赔额是多少钱?", "我如果住院的话医疗的报销比例是多少?", "我一整年的报销上限是多少?", "重大疾病保险金怎么赔付?陪多少钱?" ] for i, question in enumerate(test_questions, 1): print(f"\n{i}. ❓ 问题:{question}") try: answer = qa_chain.run(question) print(f" 💡 回答:{answer}") except Exception as e: print(f" ❌ 回答失败: {e}") print("\n" + "="*50) print("🎉 RAG系统测试完成!") print("="*50)

测试脚本

# 1. 确保你在虚拟环境中(有 (ai_venv) 前缀)
# 如果不在:source ~/ai_venv/bin/activate

# 2. 确保Ollama服务在运行(在另一个终端窗口)
# ollama serve

# 3. 运行你的RAG测试脚本
python /mnt/f/tmp/test_rag.py

运行脚本后的效果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 21:31:56

FaceFusion 3.2.0 高质量换脸参数配置指南

FaceFusion 3.2.0 高质量换脸参数配置指南 在数字内容创作的浪潮中,人脸替换技术早已从“趣味玩具”演变为影视级视觉生产的标准工具。随着 AI 模型精度和硬件加速能力的双重跃迁,FaceFusion 3.2.0 不仅实现了换脸效果的真实感突破,更通过模…

作者头像 李华
网站建设 2026/4/22 4:52:27

FaceFusion错误:代理导致localhost无法访问

FaceFusion错误:代理导致localhost无法访问 在部署和运行 FaceFusion 的过程中,不少开发者、视频处理工程师甚至AI艺术创作者都曾遭遇过这样一个令人困惑的问题:明明容器已经成功启动,端口也正确映射了,但浏览器却始终…

作者头像 李华
网站建设 2026/4/22 20:06:27

YOLO-v5与TensorRT训练部署全流程

YOLO-v5与TensorRT训练部署全流程 在智能制造工厂的质检线上,一台搭载Jetson AGX Xavier的视觉系统正以每秒百帧的速度识别PCB板上的微小焊点缺陷——这背后正是YOLO-v5 TensorRT组合的实战成果。当AI模型走出实验室、走向产线时,单纯的“能检测”已远远…

作者头像 李华
网站建设 2026/4/24 15:44:10

HunyuanVideo-Foley:AI自动生成专业级音效

HunyuanVideo-Foley:让无声视频“听见”世界 你有没有过这样的经历?精心剪辑了一段视频,画面流畅、构图完美,可一播放——安静得让人尴尬。没有脚步声、没有环境音、甚至连风吹树叶的沙沙声都缺席。整个作品像被抽走了灵魂&#x…

作者头像 李华
网站建设 2026/4/23 16:12:45

YOLO-v5与TensorRT训练部署全指南

YOLO-v5与TensorRT训练部署全指南 在智能摄像头、工业质检和自动驾驶系统日益普及的今天,一个常见的挑战摆在开发者面前:如何让目标检测模型既准确又足够快?许多团队用PyTorch训练出mAP很高的YOLO-v5模型后,却发现推理延迟高达20m…

作者头像 李华
网站建设 2026/4/26 2:28:55

维普时代Visual ALM提效降本双引擎:银行项目管理系统,激活运营新势能

当金融行业数字化转型迈入深水区,银行项目数量呈爆发式增长,类型也愈发复杂——从核心系统升级到新业务落地,从网点智能化改造到合规体系迭代,每一个项目都肩负着业务创新与运营提质的双重使命。然而,项目推进中的效率…

作者头像 李华