教育问答系统-rag,langchain项目手把手教学 项目架构配置要求创建沙箱查看已有沙箱conda env list创建沙箱conda create -n edu_rag python3.10.18创建文件夹必须有requirement.txt)anaconda目录下载对应包网络要好下载失败的可以单个下载pip install ollama0.4.4 pip install requests2.32.3 pip install numexpr2.11.0 pip install unstructured0.11.0 pip install langchain-core1.2.16 pip install langchain_community0.4.1 pip install langchain-ollama1.0.1 pip install langchain_unstructured1.0.1 pip install langchain_experimental0.4.1 pip install langchain_chroma1.1.0 pip install langchain-text-splitters1.1.1 pip install langgraph1.0.8 pip install nltk3.9.1 pip install chromadb1.3.5 pip install wikipedia1.4.0 pip install faiss-cpu pip install pymilvus2.5.4 pip install pandas2.3.1 pip install jieba pip install rank_bm250.2.2 pip install redis5.3.1 pip install pymysql1.1.1 pip install opencv-python4.10.0.84 pip install PyMuPDF1.23.16 pip install python-docx1.1.2 pip install pillow10.4.0 pip install rapidocr-onnxruntime1.3.8 pip install python-pptx0.6.23 pip install transformers4.45.0 pip install modelscope1.23.0 pip install addict2.4.0 pip install datasets3.3.1 pip install simplejson3.19.2 pip install sortedcontainers2.4.0 pip install markdown3.6 pip install sentence-transformers3.0.1 pip install milvus-model0.2.5 pip install tiktoken0.7.0 pip install sentencepiece0.2.0 pip install ragas0.2.6 pip install starlette0.46.2 pip install fastapi0.115.12 pip install FlagEmbedding1.3.5 pip install peft0.18.1慢的话可以后面加 -i https://pypi.tuna.tsinghua.edu.cn/simple加速安装Milvus1. 创建项目目录- 在本地磁盘例如 C盘创建一个文件夹用于存放 Milvus 和 Redis 的配置文件和数据mkdir C:\milvus_rediscd C:\milvus_redis2. 创建 Docker Compose 文件在 C:\milvus_redis 目录下创建文件docker-compose.yml内容如下yamlversion: 3.5# Windows/x86_64 Version# Redis Password set to: 1234services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.5environment:- ETCD_AUTO_COMPACTION_MODErevision- ETCD_AUTO_COMPACTION_RETENTION1000- ETCD_QUOTA_BACKEND_BYTES4294967296- ETCD_ENABLE_V2truevolumes:- ./volumes/etcd:/etcd/datacommand: etcd -advertise-client-urlshttp://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd/dataminio:container_name: milvus-minioimage: minio/minio:RELEASE.2023-03-20T20-16-18Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminvolumes:- ./volumes/minio:/minio/datacommand: minio server /minio/datahealthcheck:test: [CMD, curl, -f, http://localhost:9000/minio/health/live]interval: 30stimeout: 20sretries: 3standalone:container_name: milvus-standalone# 使用多架构镜像Docker on Windows 会自动拉取 x86_64 版本image: milvusdb/milvus:v2.4.4command: [milvus, run, standalone]environment:- ETCD_ENDPOINTSetcd:2379- MINIO_ADDRESSminio:9000volumes:- ./volumes/milvus:/var/lib/milvusports:- 19530:19530- 9091:9091depends_on:- etcd- minioredis:container_name: milvus-redisimage: redis:latestrestart: alwaysports:- 6379:6379volumes:- ./volumes/redis:/data# 设置 Redis 密码为 1234command: redis-server --requirepass 1234networks:default:name: milvus-network- 说明- Milvus 服务- image: 使用 Milvus 官方镜像 milvusdb/milvus:v2.4.10。- ports: 映射 gRPC19530和 RESTful API9091端口。- volumes: 数据持久化存储到本地 ./volumes/milvus 目录。- environment: 配置日志级别和 Etcd 参数。- command: 启动 Milvus 单机模式。- Redis 服务- image: 使用 Redis 官方镜像 redis:7.2。- ports: 映射默认端口 6379。- volumes: 数据持久化存储到本地 ./volumes/redis 目录。- command: 启用 AOFAppend Only File持久化模式。- volumes: 定义持久化存储卷。拉取运行docker compose up -d完成后装milvus可视化工具docker pull zilliz/attu启动docker run -d -p 3000:3000 --network milvus-network -e MILVUS_URLmilvus-standalone:19530 zilliz/attu打开3000端口验证redismlivus连接 该脚本用于: 验证Milvus和Redis服务是否OK, 因为我们已经部署好环境了, 我们要测试下我们的环境是否搭建的OK. # todo 1. 测试Milvus服务是否OK. # 导包 # # connections: 负责建立, 管理Milvus服务的网络连接. # # utility: 封装了Milvus服务的常用功能, 例如: 查看版本, 判断集合是否存在... # from pymilvus import connections, utility # # # 1. 建立与Milvus服务的连接 # # 参1(host): 代表本机地址, 仅本机程序能访问数据库. # # 参2(port): 代表Milvus服务端口. # connections.connect(host127.0.0.1, port19530) # # # 2. 获取并打印Milvus服务端版本号. # print(fMilvus version: {utility.get_server_version()}) # Milvus version: v2.4.4 # todo 2. 测试Redis服务是否OK. # 导包 import redis # 1. 创建Redis客户端实例, 用于与Redis服务建立连接并执行操作. client redis.Redis( hostlocalhost, # Redis服务器的主机地址, 如果Redis在其他机器, 写对应IP即可. port6379, # Redis服务器的端口号, password1234, # Redis数据库的索引, decode_responsesTrue # 是否对返回的数据进行解码, 默认为True, 大白话: 控制返回值是否自动解码为字符串. ) # 2. 测试Redis连接是否正常, 通过 设置 和 获取键值对 验证. try: # 2.1 通过set()方法, 设置1组键值对. client.set(name, 张三) # {name: 张三} # client.set(test_key, hello, Redis) # {name: 张三} # 2.2 调用get()方法获取键值对. value client.get(name) # value client.get(test_key) # 2.3 打印获取到的值. print(f获取到的值是: {value}) except Exception as e: print(f连接失败, 原因是: {e})ollama简单实例# 导包 import ollama # 思路1: 聊天式写法. response ollama.chat( modelqwen2:1.5b, messages[ {role: user, content: 为什么天空是蓝色的?} ] ) print(f结果是: {response}) print(f结果是: {response[message][content]}) print(♥️ * 20) # 思路2: 生成式写法. response ollama.generate( modelqwen2:1.5b, prompt为什么天空是蓝色的? ) print(f结果是: {response}) print(f结果是: {response[message][content]})结尾要跟进的记得点个关注追更不迷路