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)三个核心阶段组成。
- 索引阶段,通过处理多种来源多种格式的文档提取其中文本,将其切分为标准长度的文本块(chunk),并进行嵌入向量化(embedding),向量存储在向量数据库(vector database)中。
- 加载文件
- 内容提取
- 文本分割,形成chunk
- 文本向量化
- 存向量数据库
- 检索阶段,用户输入的查询(query)被转化为向量表示,通过相似度匹配从向量数据库中检索出最相关的文本块。
- query向量化
- 在文本向量中匹配出与问句向量相似的top_k个
- 生成阶段,检索到的相关文本与原始查询共同构成提示词(Prompt),输入大语言模型(LLM),生成精确且具备上下文关联的回答。
- 匹配出的文本作为上下文和问题一起添加到prompt中
向量 Vector 文本的数学身份证,把一段文字的语义信息转换为一串固定的数字列表,让计算机能看懂。
文本转化为向量,文本嵌入模型(text-embedding-v1)通过深度学习等技术,从文本提取语义特征并映射为固定长度的数字序列。
text-embedding-V1模型,可以生成1536维的向量(一段文本固定得到1536个数字序列),比较实用。 •1536个数字表示,这段文本在1536个主题(抽象的语义特征)方向上的得分(强度)
维度越多,更好的记录文本的特征,匹配越精准,但是性能压力越大。
余弦相似度: AB点积 除以 (A模长 * B模长)