跳转到内容

搜索仅适用于生产版本。 尝试构建并预览网站以在本地测试。

LangChain 实践笔记

LangChain主要功能:

  • Prompts:优化提示词,提示词工程
  • Models:调用各类模型
  • History:管理会话历史记录,记忆功能Memory
  • Indexes:管理和分析各类文档
  • Chains:构建功能的执行链条
  • Agent:构建智能体

开发LLM相关业务功能的集大成者,Python的第三方库,提供了各种功能的API。

pip install

  • langchain:核心包
  • langchain-community:社区支持包,提供了更多的第三方模型
  • langchain-ollama:ollama支持包,支持调用ollama托管部署的本地模型
  • dashscope:阿里云通义千问的Python SDK
  • chromadb:轻量向量数据库

通用的基础大模型有一些问题:

LLM的知识不是实时的,不具备自动更新知识的能力,导致信息滞后

LLM领域知识是缺乏的,大量知识来源于训练数据,无法覆盖特定领域高度专业化的知识

幻觉问题,LLM有时回答看似合理实际上是错误的信息

数据安全性,部分数据不适合公开到外部

RAG(Retrieval Augmented Generation)检索增强生成,为大模型提供了从特定数据源检索到的信息,来修正和补充信息。

RAG 标准流程由索引(Indexing)、检索(Retriever)和生成(Generation)三个核心阶段组成。

  1. 索引阶段,通过处理多种来源多种格式的文档提取其中文本,将其切分为标准长度的文本块(chunk),并进行嵌入向量化(embedding),向量存储在向量数据库(vector database)中。
  • 加载文件
  • 内容提取
  • 文本分割,形成chunk
  • 文本向量化
  • 存向量数据库
  1. 检索阶段,用户输入的查询(query)被转化为向量表示,通过相似度匹配从向量数据库中检索出最相关的文本块。
  • query向量化
  • 在文本向量中匹配出与问句向量相似的top_k个
  1. 生成阶段,检索到的相关文本与原始查询共同构成提示词(Prompt),输入大语言模型(LLM),生成精确且具备上下文关联的回答。
  • 匹配出的文本作为上下文和问题一起添加到prompt中

向量 Vector 文本的数学身份证,把一段文字的语义信息转换为一串固定的数字列表,让计算机能看懂。

文本转化为向量,文本嵌入模型(text-embedding-v1)通过深度学习等技术,从文本提取语义特征并映射为固定长度的数字序列。

text-embedding-V1模型,可以生成1536维的向量(一段文本固定得到1536个数字序列),比较实用。 •1536个数字表示,这段文本在1536个主题(抽象的语义特征)方向上的得分(强度)

维度越多,更好的记录文本的特征,匹配越精准,但是性能压力越大。

余弦相似度: AB点积 除以 (A模长 * B模长)