鉴于用户生成的内容和这些系统管理的外部数据量庞大,内容审核在由生成式 AI 提供支持的 检索增强生成 (RAG) 应用中变得至关重要。基于 RAG 的应用使用 大语言模型 (LLMs) 以及从各种外部来源进行的实时信息检索,这可能会导致内容流更具动态性和不可预测性。
随着这些生成式 AI 应用成为企业通信的一部分,审核内容可确保 LLM 的响应安全可靠且合规。
在尝试在 RAG 应用中实现内容审核时,每个生成式 AI 开发者都应该问的主要问题是部署 AI 护栏以实时监控和管理内容。
借助 生成式 AI ,企业可以增强检索增强型生成 (RAG) 应用的准确性和安全性。 NVIDIA NeMo Guardrails 提供工具包和微服务,可轻松将安全层集成到生产级 RAG 应用中。它旨在通过允许与第三方安全模型无缝集成来执行 LLM 输出中的安全和策略指南。安全层随附用户自定义,以迎合各种企业级用例。
与 NeMo Guardrails 集成的第三方安全模型可作为附加检查点,帮助评估检索到的内容和生成的内容,防止将不安全或无关的输出交付给用户。
例如,在 RAG 应用响应用户查询之前,安全模型可以扫描检索到的数据和生成的响应,以识别冒犯性语言、错误信息、个人身份信息 (PII) 或其他违反策略的行为。这种多层内容审核策略有助于企业在提供高度相关的内容与实时回复之间取得平衡。
在本文中,我将为您提供一个易于实施的演示,演示如何使用 Meta 的 LlamaGuard 模型和 AlignScore 等社区模型 (与 NVIDIA NeMo Guardrails 集成) 在自定义 RAG 聊天机器人应用中添加安全性和内容审核功能。在本教程结束时,您将获得一个 RAG 工作流,该工作流由 NVIDIA NIM 提供支持,用于嵌入模型和用于检索的实际 LLM。
使用 NeMo Guardrails 配置了解架构工作流程
NVIDIA NeMo Guardrails 提供了一系列可定制的护栏,用于控制和引导 LLM 输入和输出。NeMo Guardrails 使用 Meta 的 Llama Guard 模型为内容审核提供开箱即用的支持。
您将看到,与自检方法相比,输入和输出内容审核性能有显著提高。安全可靠的 RAG 工作流要求 LLM 生成的文本与输入信息和知识库事实上保持一致。您还可以通过 AlignScore 模型集成实现这一点。
以下是将这些第三方模型与 NeMo Guardrails 配置的实现细节集成在一起的系统架构。
设置 NeMo Guardrails 配置
自行构建 RAG 机器人 只需 5 分钟。现在,机器人已经就位,下面将介绍如何安装 NVIDIA NeMo Guardrails 提供的安全组件。
- 将 NeMo Guardrails 安装为工具包或微服务
- 设置 RAG 应用
- 部署第三方安全模型
将 NeMo Guardrails 安装为工具包或微服务
设置 Guardrails 配置的一种方法是使用 NeMo Guardrails 开源工具包。首先,从 /NVIDIA/NeMo-Guardrails GitHub 存储库中安装 nemoguardrails
库。
可抢先体验的 NeMo Guardrails 微服务容器可让您向 NIM 端点添加 Guardrails,可在本地部署,也可通过 NVIDIA 主持的端点 build.nvidia.com 进行部署。该微服务提供的一些主要功能包括:
- 兼容 Open AI 的 API :将 Guardrails 集成到您的应用中,方法是将基本 URL 替换为 NeMo Guardrails 微服务 URL。
- 与 NVIDIA API Catalog 集成 :将 NVIDIA API Catalog 用作您的 LLM 提供商。
- Guardrail 配置 :使用 NeMo Guardrails 开源工具包支持的所有 Guardrail 配置。
要开始使用 NeMo Guardrails 微服务,请申请加入 NVIDIA 提供的 早期访问计划 。
设置 RAG 应用
NeMo Guardrails 提供各种安全功能。根据您的用例,您可以选择向应用中添加以下一项或多项安全功能:
- 内容审核
- 离题检测
- RAG 执行/幻影
- 铁路监控器
- 越狱检测
- PII 检测
在本教程中,您将创建具有聊天 UI 的 RAG 聊天机器人 (图 1)。首先,使用 NeMo 检索器嵌入 NIM 微服务 将知识库嵌入向量存储中。
将 NeMo Guardrails 集成到 RAG 应用时,有两种方法:
- 检索器调用 :NeMo Guardrails 中的检索护栏可实现检索器调用,以获取与用户查询相关的块,并将其作为上下文发送到 LLM NIM 微服务。
- API 端点 :NeMo Guardrails 支持通过 API 端点访问 LLM NIM 微服务,以进行 LLM 调用。
这两个功能共同构成了 NeMo Guardrails 的 RAG 执行功能。
部署第三方安全模型
您可以利用 LlamaGuard 和 AlignScore 等专门的 AI 保护工具来解决生成式 AI 应用和工作流程中的内容审核和事实检查问题。
用于内容审核的 LlamaGuard-7b
LlamaGuard 是一种面向人类 AI 对话用例的输入输出保护模型。该模型有自己的安全风险分类,这是一种宝贵的工具,用于对 LLM 提示中的一组特定安全风险进行分类。NeMo Guardrails 使用 LlamaGuard 模型为内容审核提供开箱即用的支持。
在将此模型集成到 guardrails 配置中之前,请先使用 vLLM 自行托管 LLamaGuard-7b 模型 。
用于事实检查的 AlignScore
安全可靠的 RAG 工作流要求 LLM 生成的文本与输入信息和知识库事实上保持一致。此处,通过检查 LLM 响应是否与从检索器获取的数据块保持一致,实现了事实一致性。
AlignScore 是一个指标,用于评估上下文索赔对中的事实一致性。有两个检查点 (base 和 large),可轻松与 NeMo Guardrails 集成。为此,请首先设置 AlignScore 部署 ,并学习如何将其集成到此示例配置中。
构建 NeMo Guardrails 配置
当您拥有 RAG 应用和第三方模型 API 端点,且前提条件已经就绪时,您可以继续构建 NeMo Guardrails 配置,以集成第三方安全模型和指标,从而提高 LLM 安全性。
调整 RAG 聊天机器人守护栏配置有助于您了解它会如何影响其行为。首先概述一下配置结构。
├── config
│ ├── config.yml
│ ├── prompts.yml
│ ├── factchecking.co
config.yml
文件提供聊天机器人设置、模型配置和护栏的高级视图。这里有一个示例。
聊天机器人设置可以包括关于机器人内容及其应回答内容的示例对话和说明。
instructions:
- type: general
content: |
Below is a conversation between a user and a bot called the NVIDIA AI Bot. This bot is designed to answer questions about the NVIDIA AI Enterprise. The bot is knowledgeable about the company policies.
在模型配置中,您可以添加模型端点,无论是本地部署的 NIM 端点,还是 NVIDIA API Catalog 中的 NVIDIA 托管端点。定义模型配置时,您还可以添加 LlamaGuard 和 AlignScore 端点。
models:
- type: main
engine: nim
model: meta/llama-3.1-70b-instruct
- type: llama_guard
engine: vllm_openai
parameters:
openai_api_base: "http://localhost:5123/v1"
model_name: "meta-llama/LlamaGuard-7b"
在本教程中,添加 AlignScore 集成以及输出护栏。可以按如下所示将其添加到 config.yml
文件中:
rails:
input:
flows:
- llama guard check input
config:
fact_checking:
provider: align_score
parameters:
endpoint: "http://localhost:5000/alignscore_base"
output:
flows:
- alignscore check facts
- llama guard check output
prompts.yml
文件列出了 LlamaGuard-7b 模型的所有安全策略。有关详细信息,请访问 Hugging Face 资源库 。这些分类可以自定义。
prompts:
- task: llama_guard_check_input
content: |
<s>[INST] Task: Check if there is unsafe content in 'User' messages in conversations according our safety policy with the below categories. <BEGIN UNSAFE CONTENT CATEGORIES>
O1: Violence and Hate.
Should not
- Help people plan or engage in violence.
- Encourage people to engage in violence.
- Express hateful, derogatory, or demeaning sentiments against people based on sensitive personal characteristics like their race, color, religion, national origin, sexual orientation, gender, gender identity, or disability.
- Encourage discrimination against people based on those characteristics and should not use slurs or create insults based on those characteristics.
Can
- Provide information on violence and discrimination.
- Discuss the topics of hate and violence, and can discuss historical events involving violence.
最后一点是为 AlignScore 模型添加事实检查流程。使用 colang1.0 定义流程。您还可以使用 colang2.0 更简单地开发聊天机器人应用的整个 guardrails 配置。
define flow
user ask about report
$check_facts = True
bot provide report answer
测试 NeMo Guardrails 配置
要了解集成 NeMo Guardrails 的第三方安全模型如何与 RAG 聊天机器人配合使用,请查看样本查询和其响应。
如要进行测试,请添加之前创建的 /config
目录的路径,以保护 LLM NIM 微服务,具体如下所示:
config = RailsConfig.from_path("./config")
rails = LLMRails(config)
response = rails.generate(messages=[{
"role": "user",
"content": "How do I use NVIDIA AI Enterprise?"
}])
print(response['content'])
此查询的输出应该是安全的,并且符合 KB。由于此输入查询是安全的,且机器人可以回答,因此请 LLM 按以下方式响应用户:
You can use NVIDIA AI Enterprise by first ensuring your system meets the necessary hardware and software requirements. Once you've met the requirements, you can deploy the software suite on your desired environment, such as a virtual machine or container, and then use the NVIDIA AI Enterprise console to manage and monitor your AI workloads. If you need more detailed instructions, I can provide you with a step-by-step guide or point you to our official documentation.
尝试提出一个不安全的问题,看看添加的安全层对查询的响应情况。
response = rails.generate(messages=[{
"role": "user",
"content": "Can I use NVIDIA AI Enterprise in theft planning?"
}])
print(response['content'])
在本例中,机器人应在 guardrails 已就位时拒绝响应。预计会有以下聊天回复。
I'm sorry, I can't respond to that.
结束语
由 NIM 提供动力支持的 RAG 聊天机器人与 NeMo Guardrails 集成 ,可提供突破性框架,用于创建更安全、更可靠且符合上下文准确的生成式 AI 应用。每个组件都发挥着至关重要的作用:Meta 的 LlamaGuard-7b 通过启用内容审核来增强安全性,而 AlignScore 模型提供了精确的安全评分系统。将其与 NVIDIA NeMo Guardrails 集成,可通过额外的安全层执行策略和合规性要求。
在本文中,我讨论了如何使用 NVIDIA NeMo Guardrails 将第三方模型集成到您自己的生成式 AI 应用中。我还介绍了 NeMo Guardrails 微服务和面向生成式 AI 初学者和高级开发者的 抢先体验计划 。