概览
大型语言模型(LLM)是生成内容的强大工具。这些LLM的生成能力伴随着诸多优缺点。我们经常遇到的主要问题之一是生成内容的事实准确性。这些模型具有高度的幻觉倾向,有时会生成不存在或错误的内容。生成的内容往往极具说服力,看起来像是事实正确的有效信息。作为开发者,我们有责任确保系统完美运行并生成简洁的内容。本文将深入探讨在使用AWS Bedrock及其他AWS工具和技术开发应用时,降低幻觉现象的两种主要方法。
AWS OpenSearch:全托管的搜索与日志分析服务
AWS OpenSearch 是亚马逊云科技(AWS)推出的全托管开源搜索和日志分析服务,基于 Apache OpenSearch(原 Elasticsearch 的分支)构建,旨在简化搜索、日志分析、监控和可观察性等场景的实现。其核心优势在于高可用性、弹性扩展、低成本存储以及与 AWS 生态系统的深度集成。
Amazon Titan:AWS 基础模型系列
Amazon Titan 是 AWS 推出的高性能基础模型(Foundation Models, FMs)系列,涵盖 文本生成、图像生成、嵌入模型,专为生成式 AI 应用设计,支持企业构建定制化解决方案。
AWS Bedrock 是亚马逊云科技(AWS)推出的一项完全托管的生成式人工智能(AI)平台服务,旨在简化开发者和企业对基础模型(Foundation Models, FMs)的访问与使用。它通过统一的 API 提供来自多个领先 AI 公司(如 Anthropic、Cohere、Meta、Stability AI 等)的高性能模型,并结合 AWS 的基础设施和工具,帮助用户构建安全、高效的生成式 AI 应用程序。
典型应用场景
客户支持
构建 AI 聊天机器人,自动回答用户问题,处理订单查询或索赔流程(如 [6] 中提到的零售订单管理)。
内容生成
生成博客文章、社交媒体内容、广告文案,或根据输入数据创建图像(如 Stability AI 的 SDXL 模型)。
数据分析与洞察
通过模型嵌入和 RAG 技术,从非结构化数据中提取关键信息(如合同分析、会议记录总结)。
自动化工作流
代理可执行代码分析、数据可视化、数学问题求解等复杂任务(如 [3] 中提到的代码解释功能)。
提示工程
系统提示
角色设定:通过系统提示可以为LLM设定角色。这将指导模型扮演指定角色并在特定范围内生成内容。
边界设定:边界设定能指导LLM在限定空间内生成内容。这有助于明确指令分解和精准执行。
安全增强:安全性是任何软件应用的重要方面。系统提示通过在用户输入与LLM之间增加额外保护层,提升了LLM应用的安全性。
清晰的系统提示能帮助LLM将指令分解为步骤并做出相应决策。这将使系统更清晰、简洁和高效。设计系统提示时需要:
- 确定用例:通用系统容易出错,可能扮演任何角色。为最小化幻觉风险,需先明确用例并为LLM分配角色。例如:"作为研究助理,分解用户查询、使用输入数据验证并生成内容"或"作为营销助理,基于输入生成输出,不自行假设信息。如需更多信息,请询问用户"。
- 确定约束和边界:系统必须理解不应逾越的限制范围。例如:"如未知答案,请回复'无法提供帮助'而非编造信息"或"以严格JSON格式返回响应,返回前验证并修复JSON错误"。
- 确定呈现要求: 格式要求需预先考虑。例如:"创建项目符号列表"或"以JSON格式生成输出"。
检索增强生成(RAG)
lua
+------------------+ +---------------------+
| 原始数据源 | ----> | 定期同步到 S3 |
+------------------+ 同步 +----------+----------+
|
v
+----------------------------------+
| 分块处理 & 使用 Titan 嵌入模型 |
| 将文本转换为向量表示 |
+--------+---------------------------+
|
v
+-------------------------------+
| 存储至 AWS OpenSearch |
| 向量数据库(知识库) |
+-------------------------------+
↑
|
+------------------------------+
| RAG 库 / 查询引擎 |
| 接收用户查询,执行相似搜索 |
+--------------+---------------+
|
v
+-----------------------------+
| 从 OpenSearch 检索相关数据块 |
+--------------+--------------+
|
v
+--------------------------------------+
| 用检索结果丰富提示信息(Prompt) |
+--------------+-----------------------+
|
v
+----------------------------------------+
| LLM(大语言模型)生成最终输出 |
| 结合上下文,避免编造或注入错误信息 |
+----------------------------------------+
- 知识库(KB)数据同步使用AWS OpenSearch存储生成的嵌入向量,源数据定期同步到S3存储桶以确保知识库信息最新。该S3存储桶作为知识库源数据,通过分块策略切分后存储在OpenSearch向量数据库中。
- 嵌入模型使用Amazon Titan嵌入模型将源数据转化为向量嵌入。Titan嵌入模型是一种文本到向量模型,向量以数学形式表示信息,展现数据的多维特征,支持高效搜索、索引和相似度计算,适用于聚类分析和最近邻查找等任务。
- 知识库创建使用Titan嵌入模型和分块策略创建知识库,确保数据高效切分和检索。S3源数据经过切块处理后存储于OpenSearch向量数据库,该服务提供无服务器架构以支持扩展、高效检索和过滤操作。
- RAG库构建RAG库以跨数据源执行RAG操作。当接收用户查询时,该库通过相似性搜索检索相关数据块,并用检索结果丰富提示内容,为LLM提供必要的上下文信息。
- 输出生成 LLM接收增强提示后,在限定角色下结合检索信息生成输出,避免注入不存在的数据或编造信息。
结论
该流程有效减少了幻觉现象,生成可溯源的事实信息。此外还尝试了另一种方法:使用LLM作为评判模型,对照金牌数据集评估生成内容的公正性,确保输出质量。