前言 在大模型应用开发中,RAG(Retrieval-Augmented Generation,检索增强生成)是最核心的技术范式之一。它通过将外部知识库与大语言模型结合,解决了LLM的"幻觉"问题和知识时效性问题。
本文将从零开始,使用 LangChain 框架和 ChromaDB 向量数据库,构建一个完整的本地知识库问答系统。所有代码均可本地运行,无需依赖云端API。
为什么需要RAG? 直接使用大模型存在以下痛点:
知识截断:模型训练数据有截止日期,无法回答最新问题 幻觉问题:模型会"编造"不存在的信息 领域缺失:通用模型缺乏特定领域的专业知识 数据安全:企业内部数据不适合上传到第三方API RAG的核心思路是:先检索,再生成。从知识库中检索相关文档片段,将其作为上下文注入Prompt,让大模型基于真实数据进行回答。
技术架构 用户提问 ↓ [文档加载] → [文本分割] → [向量化] → [ChromaDB存储] ↓ 用户提问 → [Embedding] → [向量检索] → [Top-K相关片段] ↓ [Prompt组装] → [LLM生成回答] 环境准备 安装依赖 # 创建虚拟环境 python -m venv rag_env source rag_env/bin/activate # Linux/Mac # rag_env\Scripts\activate # Windows # 安装核心依赖 pip install langchain langchain-community langchain-chroma chromadb pip install sentence-transformers # 本地Embedding模型 pip install unstructured # 文档加载器 pip install tiktoken # Token计算 项目结构 rag_project/ ├── knowledge_base/ # 知识库文档目录 │ ├── doc1.
Simon
published on 2024-09-06 Mac上通过brew install mysql安装,但是某天突然无法启动,报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)。
网上的解决方案试了一遍没一个有用,真正有用的是
rm -rf /opt/homebrew/var/mysql 但是会把所有的内容清空。自己慎重。
删除后重新安装就OK了
Simon
published on 2024-05-22 included in 后端开发 升级背景 Spring Boot 3.x 是一个重大版本升级,基于 Spring Framework 6,要求:
Java 17+ (最低要求)Jakarta EE 9+(包名从 javax.* 迁移到 jakarta.*) 很多废弃的 API 被移除 本文记录从 Spring Boot 2.5.9 升级到 3.2.3 的完整过程。
Simon
published on 2023-11-08 included in 编程 前言 我的系统信息:
Distributor ID: AlibabaCloud(AliyunLinux) Description: Alibaba Cloud Linux (Aliyun Linux) release 2.1903 LTS (Hunting Beagle) Release: 2.1903 aliyun linux 2实际对应的是centos7。默认的docker版本是Docker version 1.13.1, build 7d71120/1.13.1,这个版本已经很老旧了,无法兼容一些新的容器。所以升级是非常有必要的。
卸载旧版本 删除docker yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 如果无法卸载,则需要先查看安装的docker包。 执行下面的指令:
yum list installed | grep docker 打印结果如下:
docker.x86_64 2:1.13.1-209.git7d71120.1.al7 @updates docker-client.x86_64 2:1.13.1-209.git7d71120.1.al7 @updates docker-common.x86_64 2:1.13.1-209.git7d71120.1.al7 @updates docker-compose.noarch 1.18.0-4.el7 @epel docker-rhel-push-plugin.x86_64 2:1.13.1-209.git7d71120.1.al7 @updates python36-docker.noarch 2.6.1-3.el7 @epel python36-docker-pycreds.
Simon
published on 2023-05-31 included in 后端开发 什么是单例模式 单例模式(Singleton Pattern)是最常用的设计模式之一,它保证一个类只有一个实例,并提供一个全局访问点。
在实际开发中,单例模式常用于:
Simon
published on 2022-11-23 included in 编程 Alibaba Cloud Linux是阿里云基于龙蜥社区(OpenAnolis)的龙蜥操作系统(Anolis OS)打造的操作系统发行版,兼容RHEL/CentOS。
底层实际就是centos,先要区分你的版本是centos7还是8。
Alibaba Cloud Linux 3选择Linux kernel 5.10 LTS,同时默认搭载GCC 10.2、binutils 2.35、glibc 2.32等基础软件。 Alibaba Cloud Linux 2选择Linux kernel 4.19 LTS,同时提供GCC-7.3.1/8.2.1/9.1.1的devtoolset支持。
Alibaba Cloud Linux 3基于Anolis OS 8打造,兼容CentOS 8、RHEL 8生态。 Alibaba Cloud Linux 2基于Aonlis OS 7打造,兼容CentOS 7、RHEL 7生态。
可以通过cat /proc/version指令查看你的内核版本,以此来判断你是7还是8。
Linux version 4.19.91-24.1.al7.x86_64 (mockbuild@koji.alibaba-inc.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)) #1 SMP Wed Jul 21 17:40:23 CST 2021 比如我的是4.19,那么就是centos 7。
1. 首先要添加源 如果是其他版本的,自行在这里https://packages.endpointdev.com查找
yum install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm (非root用户前面需要添加sudo)
2. 修改repo文件 如果你此时去yum install git会报错