【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记

《基于 InternLM 和 LangChain 搭建你的知识库》

课程文档:《基于InternLM和LangChain搭建你的知识库·文档》

常见术语

RAG: Retrieval Augmented Generation,检索增强生成

1. 大模型开发范式

1.1 RAG VS Finetune

【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记_第1张图片

RAG Finetune
低成本 可个性化微调
可实时更新 知识覆盖面广
受基座模型影响大 成本高昂
单次回答知识有限 无法实时更新

1.1.2 Finetune

(2)成本高昂:需要GPU算力以及模型训练知识

3. 构建向量数据库

3.1 加载源文件 → \rightarrow 文档分块 → \rightarrow 文档向量化

【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记_第2张图片

  • 确定源文件类型,针对不同类型源文件选用不同的加载器
    • 核心在于将带格式文本转化为无格式字符串
  • 由于单个文档往往超过模型上下文上限,我们需要对加载的文档进行切分
    • 一般按字符串长度进行分割
    • 可以手动控制分割块的长度和重叠区间长度
  • 使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
    • 可以使用任意一种Embedding模型来进行向量化
    • 可以使用多种支持语义检索的向量数据库,一般使用轻量级的Chroma

4. 搭建知识库助手

4.1 RAG方案优化建议

【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记_第3张图片

  • 基于RAG的问答系统性能核心受限于:
    • 检索精度
    • Prompt性能
  • 一些可能的优化点:
    • 检索方面:
      • 基于语义进行分割,保证每一个chunk的语义完整
      • 给每一个chunk生成概括性索引,检索时匹配索引
    • Prompt方面:
      • 迭代优化Prompt策略

南溪:感觉“概括性索引”就有点像论文的摘要。

5. Web Demo 部署

5.1 InternLM 模型部署

在InternStudio平台中选择A100 (1/4)的配置,镜像选择Cuda11.7-conda

5.1.1 从本地克隆环境

Note:
视频中演示的是用conda create命令克隆环境,而文档中修改成了使用脚本install_conda_env_internlm_base.sh进行下载。

5.1.2 激活环境

conda activate InternLM

5.1.3 启动 Web Demo 服务器

运行服务器

python run_gradio.py

以绝对路径运行服务器

python /root/data/run_gradio.py

5.1.4 测试程序效果

InternLM能做什么?

5.2 实验日志

2024年1月9日:“在 Windows-PS 终端上执行ssh-keygen -t rsa卡住无响应”

在连接云主机失败后,我们尝试再次执行ssh-keygen -t rsa命令,PS终端显示:

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\xxx/.ssh/id_rsa):_

然后提示符在闪烁,不过10分钟左右之后却一直没有任何响应;

ChatGPT4:
这个警告信息表示你尝试连接的远程主机的身份验证密钥已经改变。这通常发生在以下情况之一:

  1. 远程主机已更换:如果服务器硬件更换或者系统重装,那么它的SSH密钥将会改变。
  2. 中间人攻击:这种情况较为罕见,但仍然是可能的。如果有人在你和远程服务器之间尝试拦截或修改你的连接,这会导致密钥不匹配。

在处理这个问题时,你需要确定变更是否可信。如果你知道远程主机的密钥确实有改变(例如服务器被重新安装或更换),那么你可以安全地更新密钥。如果你不确定,最好先与系统管理员或远程主机的负责人联系确认。
若确定要更新密钥,你需要做的是:

  1. 编辑 known_hosts 文件:打开 C:\\Users\\xxx/.ssh/known_hosts 文件,并找到提到有问题的远程主机(ssh.intern-ai.org.cn)的条目。删除这一行。
  2. 重新连接:再次尝试连接远程主机。这次你将会被询问是否接受新的主机密钥。确认后,新的密钥将被添加到 known_hosts 文件中,之后的连接将不再出现此警告。

请确保在进行这些操作之前确认远程主机的身份,以避免安全风险。

Troubleshooting

(1)输入“InternLM是什么”,模型提示“无法回答”

输入问题:

InternLM是什么

【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记_第4张图片

解决方案:多试几次可能会获得回答

我们重试了三次之后,终于获得了回复:
【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记_第5张图片
感觉InternLM这个模型好像不太稳定;

你可能感兴趣的:(langchain,学习,笔记)