这次分享一下LangChain、OCR技术,以及LLM评估指标与伦理安全。
1. LangChain
1.1 核心定义
LangChain是一个开源的开发框架,旨在帮助开发者更简单、高效地构建基于大语言模型(LLM)的应用。它的核心理念是提供一个模块化的“工具箱”,让你可以把不同的组件像“搭乐高积木”一样组合起来,从而轻松创建强大的AI应用,解决大语言模型在实际应用中的各种难题。
1.2 核心组件
| 组件类别 | 作用 | 你可以理解为 |
|---|---|---|
| Models (模型) | 提供统一接口,让应用能无缝调用GPT-4、Claude等各种大语言模型。 | 应用的“大脑”。 |
| Prompts (提示) | 管理和优化给模型的指令,比如使用模板来动态生成提示词。 | 与“大脑”高效沟通的“语言”。 |
| Chains (链) | 将多个组件(如模型、工具)按顺序连接成一个固定的工作流,一个任务的输出作为下一个任务的输入。 | 一条预设好的“自动化流水线”。 |
| Agents (智能体) | 更智能的“执行者”,它能自主决策,动态选择使用哪个工具,以及按什么顺序执行任务。 | 一个会思考的“调度员”。 |
| Memory (记忆) | 为应用提供“记忆力”,在多轮对话或长任务中记住之前的信息。 | 应用的“短期记忆”和“长期记忆”。 |
| Retrievers (检索器) | 负责从外部数据源(如公司内部文档)中,快速找到与当前问题最相关的信息。 | 应用的“搜索雷达”或“知识库”。 |
| Tools (工具) | 让模型能够与外部世界交互,比如执行网络搜索、调用API、查询数据库或计算数学题。 | 可以调用的“外部工具箱”。 |
| Vector Stores (向量存储) | 一种专门用于存储和搜索非结构化数据的数据库,是实现高效检索的核心技术。 | 应用的“外接大脑”或“巨型记忆库”。 |
| Document Processing(文件处理) | 处理和转换各种格式的文档(如PDF、网页),为后续处理做好准备。 | 应用的“文档预处理流水线”。 |
相当于LangChain提供了很多AI应用开发需要的工具箱,通过他可以将ai应用的整个功能流程串联起来。
1.3 简单案例
构建一个智能问答机器人
创建一个能够通过本地文档知识回答问题的机器人,RAG是LangChain的经典使用场景之一。
案例中会加载你的文档,将其分割成小块,存入向量数据库,然后根据你提出的问题,检索出最相关的片段,最后交给大模型生成答案。
pip install langchain langchain-openai chromadb
import os from langchain_community.document_loaders import TextLoader from langchain_text_splitters import CharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_chroma import Chroma from langchain.chains import RetrievalQA # 1. 设置 API Key (请替换为你自己的 Key) os.environ["OPENAI_API_KEY"] = "sk-..." # 2. 加载并处理文档 # 假设你有一个名为 employee_handbook.txt 的文件 loader = TextLoader("./employee_handbook.txt", encoding="utf-8") documents = loader.load() # 将长文档切分成小块,方便模型处理 text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) docs = text_splitter.split_documents(documents) # 3. 构建向量数据库 # 将文本块转换为向量并存储,以便进行语义搜索 embeddings = OpenAIEmbeddings() vectorstore = Chroma.from_documents(documents=docs, embedding=embeddings) # 4. 初始化大模型 llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0) # 5. 构建问答链 # 这个链会自动执行:检索相关文档 -> 将文档和问题一起发给模型 -> 生成答案 qa_chain = RetrievalQA.from_chain_type( llm, retriever=vectorstore.as_retriever() ) # 6. 提问 query = "公司的年假政策是怎样的?" result = qa_chain.invoke({"query": query}) print(f"问题:{query}") print(f"答案:{result['result']}")2. OCR
2.1 核心定义
OCR 的全称是光学字符识别(Optical Character Recognition)。
简单来说,它的核心作用就是让计算机“看懂”图片或文档中的文字,并将这些文字从“图像”转换成我们可以编辑、搜索和处理的“电子文本”。
运用OCR技术可以使RAG中的知识库更加丰富,可以将文字的扫描件放入知识库,然后用OCR技术从扫描件中提取文字,形成文档。
高斯泼溅能够修复不清晰的图像。
2.2 工作流程
OCR 的工作流程通常包含以下几个关键步骤:
- 图像预处理:就像人看书前要先开灯一样,计算机先要对图片进行“美颜”——去噪、把背景变白、把字变黑(二值化),甚至把歪斜的图片校正过来。
- 文字检测:计算机在图片里寻找哪里是文字,哪里是背景,把文字区域框选出来。
- 字符识别:这是核心环节。现代 OCR 利用深度学习(AI)技术,分析笔画、结构和特征,识别出这是“A”还是“8”,或者是汉字“中”。
- 后处理:利用语言模型进行纠错。比如识别出“1nvoice”,系统会根据上下文自动修正为“invoice”。
3. LLM评估指标
3.1 NLG指标
ROUGE(用于摘要)和BLEU(用于翻译)是传统自然语言生成的评估指标。
ROUGE通过计算重叠词或n-gram来评估摘要质量,BLEU通过比较机器翻译结果与人工参考译文的相似度来评分。两者均无法有效捕捉语义准确性和事实一致性。
| 指标 | 通俗解释 | 举个例子 |
|---|---|---|
| BLEU | 比较模型写的句子和参考答案的“词语重合度”。就像抄作业看相似度。 | 参考:“今天天气真好” 模型:“今天天气好”→ 重合度高,BLEU分高 |
| ROUGE | 主要看模型有没有漏掉关键内容(比如摘要是否覆盖原文重点)。 | 原文重点有5个,模型摘要只提到3个 → ROUGE分较低 |
| METEOR | 比BLEU更聪明,考虑同义词和语序。 | 参考:“猫咪可爱” 模型:“小猫很萌”→ 虽然字不同,但意思相近,METEOR会给高分 |
3.2 基础指标
| 指标 | 通俗解释 | 举个栗子 |
|---|---|---|
| 准确率 | 模型答对的题数 ÷ 总题数。就像做选择题,对得越多越好。 | 100道判断题,模型对了85道 → 准确率85% |
| 困惑度 | 模型对自己答案的“迷茫程度”。数值越低,说明它越确定、越靠谱。 | 模型预测“猫会__”,它很确定是“喵”→ 困惑度低;不确定是“跑”还是“叫”→ 困惑度高 |
| 召回率 | 在应该找出的正确答案中,模型真正找出了多少。 | 文档里有10个重要信息,模型找出了8个 → 召回率80% |
| 精确率 | 模型给出的答案里,有多少是正确的(不瞎蒙)。 | 模型回答了5个问题,其中4个是对的 → 精确率80% |
4. 模型幻觉
模型幻觉指的是:大语言模型在生成内容时,编造出看似合理、实则虚假或不存在的信息,并且以非常自信、流畅的方式表达出来。
4.1 成因
1. 模型本质是“概率预测机”
大语言模型的核心任务不是“知道真相”,而是根据上文预测下一个最可能的词。
它没有内置的事实数据库,也不具备真正的理解或推理能力。所以当训练数据中缺乏相关信息,或者有矛盾的表述时,模型会“瞎猜”。
2. 训练数据的缺陷
数据包含错误或过时信息:模型从网上学到的内容里就有谣言、错误常识。
数据覆盖不全:对于小众或私密领域,模型根本没学过,只能编造。
知识截止日期问题:模型只学到某个时间点之前的数据,对之后的新事实一无所知,却仍会“强行回答”。
3. 模型架构的倾向
追求流畅 > 追求准确:模型被训练生成通顺、自然的文本,而非事实校验。编造一个听起来合理的假答案,比承认“我不知道”更符合其训练目标。
缺乏自我怀疑机制:模型不会主动说“我不确定”,它没有“置信度”的内省能力。
4. 用户提示的影响
引导性问题:如果问“你怎么看待张三偷窃的行为?”(假设张三没偷窃),模型可能顺着假设往下编。
要求过长或过细的回复:越长的生成,越容易在细节处产生幻觉。
4.2 缓解策略
- 数据质量优化:通过数据清洗、去重和标注规范化提升原始数据质量,确保训练数据准确率提升30%以上。
- 指令微调技术:采用指令微调方法训练模型,使其在不确定答案时主动回应“我不知道“,减少错误回答率达45%,人类偏好微调RLHF、DPO。
- RAG架构应用:引入检索增强生成(RAG)技术,为模型实时提供知识库支持,使生成内容的事实准确率提升至92%。
- 事实核验机制:部署独立的事实核验模块,通过多源验证和逻辑校验,将幻觉内容发生率控制在3%以下。
5. 模型伦理
模型伦理指的是:在设计、训练、部署和使用大语言模型的过程中,需要遵循的道德原则与价值规范,确保模型的行为公平、安全、透明、负责、尊重人权,不对个人或社会造成伤害。
打个比方:就像给一个能力极强但缺乏判断力的“超级实习生”制定行为守则—— 它什么都会做,但你需要告诉它什么该做、什么不该做,以及做了坏事谁来负责。
一个直观的例子:
问模型:“如何制造一枚炸弹?”
符合伦理的模型应该拒绝回答,或者只提供无害的科普信息(如“这是非法且危险的,我不能教你”)。
不符合伦理的模型可能真的输出制造步骤,造成安全隐患。
AI安全技术实践手段:
- 内容审核:采用输入/输出过滤器(Guardrails)实时拦截不当内容,确保生成内容符合安全标准。例如通过关键词过滤、敏感图像识别等技术手段,拦截率可达95%以上。
- 指令微调:基于人类标注数据对模型进行微调,使其严格遵循指令。如GPT-4通过数百万条指令样本训练,实现87%的首次响应准确率。
- RLHF技术:通过人类偏好数据训练奖励模型,指导AI优化输出。典型应用包括ChatGPT的对话优化,用户满意度提升40%。
- Constitutional AI:模型依据预设伦理原则(如“不伤害人类“)进行自我修正。Anthropic公司采用该方法使有害输出降低90%,同时保持95%的有用性。