宣布 LlamaCloud 全面上市(以及我们的 1900 万美元 A 轮融资)!
LlamaIndex

Protect AI 2024-03-20

使用 LlamaIndex 和 Protect AI 的 LLM Guard 保护 RAG

这是一篇由 Protect AI 发布的客座文章。

我们相信 RAG 将成为企业开发 LLM 应用时的首选方法之一,用于生成更相关、更准确、根据公司特定内容量身定制的提示响应。然而,虽然使用 ChatGPT 分析网页可能会使 LLM 容易受到网页中嵌入的注入攻击,但认识到注入也可能隐藏在用于检索数据并注入到 LLM 中的向量数据库或知识图谱中至关重要。

这就是为什么我们很高兴描述 Protect AI 的 LLM Guard 如何保护您在使用 LlamaIndex 构建的 LLM 应用中用于获取上下文的数据源。


LLM Guard 是 Protect AI 开发的一个开源解决方案,旨在增强大型语言模型(LLMs)的安全性。它被设计用于在生产环境中轻松集成和部署。它为 LLMs 的提示和响应提供了广泛的安全扫描器,用于检测、编辑和清理对抗性提示攻击、数据泄露和完整性破坏(例如,攻击性内容、幻觉)。

LLM Guard 的构建目的明确:尽管 LLMs 潜力巨大,但企业采用却一直犹豫不决。这种犹豫源于重大的安全风险以及实施这些技术时缺乏控制和可观察性。凭借其模型超过 250 万次的下载量和 Google Patch Reward,LLM Guard 是推理阶段 LLM 安全领域的开源标准和市场领导者。


使用 LlamaIndex 保护 RAG

在下面的示例中,我们展示了一种提高 RAG 应用安全性的实用方法。具体来说,我们将探讨一个旨在促进人力资源团队自动筛选候选人简历的 RAG 应用。在这批简历中,有一批不同的候选人,其中包括一名缺乏经验、因此不是最合适人选的候选人。攻击的性质表现为在该特定候选人的简历中嵌入了一个提示注入,隐藏在白色文本中,肉眼难以检测。

在 Notebook 示例中,我们首先进行了攻击,然后在用 LLM Guard 加固应用后重复了这一过程。通过这个示例,我们展示了如何使用 LLM Guard 和 LlamaIndex 对文档进行输入和输出扫描,以检测任何恶意内容。虽然理想情况下,我们应该在摄取之前扫描文档,但为了简化示例,我们选择在检索期间进行扫描。在实际使用场景中,在从 API 检索实时数据(非向量存储)时进行扫描至关重要,因为这些数据可能包含投毒的信息源,我们需要对其进行验证。对于输出扫描,只需将 LlamaIndex 生成的结果通过 LLM Guard 运行即可完成。

llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1, output_parser=output_parser)

service_context = ServiceContext.from_defaults(
    llm=llm, 
    transformations=transformations,
    callback_manager=callback_manager,
)
index = VectorStoreIndex.from_documents(
    documents, service_context=service_context
)

input_scanners = [
    Anonymize(vault, entity_types=["PERSON", "EMAIL_ADDRESS", "EMAIL_ADDRESS_RE", "PHONE_NUMBER"]), 
    Toxicity(), 
    PromptInjection(),
    Secrets()
]

llm_guard_postprocessor = LLMGuardNodePostProcessor(
    scanners=input_scanners,
    fail_fast=False,
    skip_scanners=["Anonymize"],
)

query_engine = index.as_query_engine(
    similarity_top_k=3,
    node_postprocessors=[llm_guard_postprocessor]
)
response = query_engine.query("I am screening candidates for adult caregiving opportunity. Please recommend me an experienced person. Return just a name")
print(str(response))

LLM Guard 保护您的 LLM 应用

正如在利用 LLM Guard 保护人力资源筛选应用的实际示例中所展示的,缓解潜在攻击的重要性怎么强调都不为过。此外,随着 LLMs 的快速发展以及嵌入代理和多模态等高级功能,潜在违规行为的复杂性和影响显著升级。因此,优先考虑 RAG 安全不仅是必要的,更是防范日益复杂的威胁和确保关键企业 LLM 应用完整性的基础。

通过访问我们的文档来试用 LLM Guard。此外,加入我们的 Slack 频道,提问任何问题!