Elasticsearch:RAG 和 grounding 的價值

作者:來自 Elastic?Tomás Murúa

了解 RAG、grounding,以及如何通過將 LLM 連接到你的文檔來減少幻覺。

更多閱讀:Elasticsearch:在 Elastic 中玩轉 DeepSeek R1 來實現 RAG 應用

想獲得 Elastic 認證嗎?查看下一期 Elasticsearch Engineer 培訓的時間!

Elasticsearch 擁有大量新功能,幫助你為你的使用場景構建最佳搜索方案。深入學習我們的示例 notebook,了解更多信息,開始免費的 cloud 試用,或者現在就在你的本地機器上嘗試 Elastic 吧。


大型語言模型(LLM)能夠生成連貫的回答,但當你需要真實且更新的信息時,它們可能會產生幻覺(編造數據)并給出不可靠的答案。為防止這種情況,我們使用 grounding 來為模型提供專門的、針對特定使用場景的、相關的上下文信息,超越 LLM 的訓練內容。

Grounding 是將特定數據源連接到模型的過程,用于將其 “接地” 到真實內容,而不是僅依賴模型訓練時學到的模式,從而提供更可靠和更準確的答案。

Grounding 有助于減少模型幻覺,根據你的數據源生成響應,并通過提供引用讓你能夠審查回答內容。

檢索增強生成( Retrieval Augmented Generation?- RAG )是一種 grounding 技術,它使用搜索算法從外部來源檢索相關信息,然后將這些信息作為上下文提供給 LLM,最后模型結合增強后的上下文和其原始訓練數據生成答案。

RAG 的工作流程圖如下:

RAG 讓你可以通過更新或擴展模型可訪問的外部數據源來輕松擴展系統。同時,它也是一種相較于微調 LLMs 更具性價比的替代方案,因為你只需添加數據,無需大量定制。

而且由于 RAG 可以訪問并使用最新信息,它非常適合那些對最新信息要求較高的使用場景。

幻覺示例

在這個例子中,我們將使用 DeepSeek 并提問:“Who is the author who won the Chilean National Literature Prize in 1932?” 這是一個有陷阱的問題,因為這個獎項是在 1942 年才設立的。讓我們看看模型是如何回答的:

如你所見,由于 AI 沒有完整的信息,它產生了幻覺并給出了一個編造的答案。盡管作者和作品是真實存在的,但回答中的其他部分是錯誤的。

現在,我們來看看當我們使用 RAG 進行 grounding 后,模型的表現如何。為此,我們將上傳關于智利國家文學獎的 Wikipedia 頁面:

現在,讓我們再次提出同樣的問題并檢查答案:

如你所見,使用 RAG 后我們得到了正確的答案。它指出 1932 年沒有頒發該獎項,并請求用戶進一步澄清問題。

在 Playground 中使用 RAG

通過使用 Elasticsearch,你可以輕松擴展,唯一的限制是集群容量。你可以使用不同的數據源和連接器(connectors)來獲取所需數據。此外,你完全擁有你的數據,因為它保留在你的基礎設施中,不會上傳到第三方服務;如果你運行本地 LLM,你的數據甚至不會離開你的網絡。最后,你可以通過設計查詢和基于訪問控制( RBAC )的過濾方式來控制搜索過程。

我們將使用 Playground,這是我們的低代碼平臺,它可以讓你快速簡單地使用 Elasticsearch 內容創建 RAG 應用。

以下是一個逐步指南,教你如何將 PDF 或其他文檔上傳到 Playground。你也可以在這里查看更多信息,并在這里試用 Playground。

上傳 PDF

我們將把與 DeepSeek 提供的相同 PDF 文件索引到 Kibana 中。如果你按照上面文章中的步驟操作并創建了 semantic_text 字段,你將創建一個帶有相應嵌入的向量數據庫,準備好供使用。

提問

提問以下問題:

“Who is the author who won the Chilean National Literature Prize in 1932?”

Playground 將此查詢發送到 Elasticsearch,Elasticsearch 運行語義搜索并定位與問題相關的信息片段。然后,這些片段作為上下文被包含在發送給 LLM 的提示中,以便將答案與我們提供的信息源進行 grounding。

最后,Playground 生成的答案說明 1932 年沒有頒發獎項,并提供相關片段的引用作為證據。

Playground 還提供了兩個非常有用的功能,以幫助理解 RAG 系統的底層組件:

查詢

你可以查看 Elasticsearch 正在運行的查詢,以檢索相關文檔,并根據需要啟用/禁用字段。

查看代碼

如果你可以部署你的 RAG 應用,Playground 為你提供支持。在 "View Code" 標簽下,你可以查看用于創建整個 RAG 工作流的底層代碼。你可以選擇兩種 Python 方案:使用 Elasticsearch 客戶端與 OpenAI,或基于 Langchain 的實現。

如果你想定制體驗并將代碼部署到其他地方,你可以使用這個代碼片段作為起點。

結論

Grounding 是一個將 LLM 連接到外部數據源的過程,使它們能夠超越訓練內容,提供更準確和可信的答案。檢索增強生成(RAG)是一種 grounding 方法,它具有可擴展性、性價比高,并確保可以訪問最新的信息。

像 Playground 這樣的工具通過啟用大規模索引、定制搜索和帶有引用的響應,簡化了 RAG 的實施,這使你能夠輕松驗證答案并確保獲得準確和可信的結果。

如果你想關于 RAG 特性的深入文章,可以從這篇開始,獲得 RAG 的更技術性定義。你還可以查看《Rag vs. fine-tuning: When RAG is the best decision》,《How to leverage document security using RAG》以及《RAG systems in production》。

原文:RAG and the value of grounding - Elasticsearch Labs

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79583.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【黑馬JavaWeb+AI知識梳理】后端Web基礎01 - Maven

Maven Maven核心 Maven概述 定義: Maven是一款用于管理和構建Java項目的工具,是apache旗下的一個開源項目,基于項目對象模型(POM,project object model)的概念,通過一小段描述信息來管理項目的…

C語言易混淆知識點詳解

C語言中容易混淆的知識點詳解 C語言作為一門基礎且強大的編程語言,有許多容易混淆的概念和特性。以下是C語言中一些常見易混淆知識點的詳細解析: 1. 指針與數組 相似點: c 復制 下載 int arr[10]; int *ptr arr; 都可以使用[]運算符訪…

MCP原理詳解及實戰案例(動嘴出UI稿、3D建模)

文章目錄 MCP 原理介紹架構核心組件協議層傳輸層連接生命周期MCP與function calling: 互補關系 MCP python SDKMCP的優點 怎么用MCP:天氣服務參考應用項目: REF 24年11月份,claude推出了模型上下文協議( MCP),作為一種潛在的解決方案&#xf…

2025年深圳杯數學建模(東三省)B題【顏色轉換】原論文講解(含完整python代碼)

大家好呀,從發布賽題一直到現在,總算完成了2025年深圳杯數學建模(東三省)B題【顏色轉換】完整的成品論文。 本論文可以保證原創,保證高質量。絕不是隨便引用一大堆模型和代碼復制粘貼進來完全沒有應用糊弄人的垃圾半成…

cpp學習筆記1--class

2年前學過cpp,但是一直沒有用到,現在要讀研了,終于要用到了,重新拿出來看一看,覺得很多東西都能在c和python上看到影子。 #include "iostream" class Person { private:std::string name;int age;public://…

基于YOLOv的目標檢測訓練數據構建方法研究—圖像采集、標注、劃分與增強一體化流程設計

在目標檢測任務中,高質量的訓練數據是模型性能提升的關鍵。本文圍繞 YOLOv 系列模型,系統性地研究了目標檢測訓練數據的構建方法,提出了一套從圖像采集、標注、數據集劃分到數據增強的一體化流程設計 。通過多源圖像采集策略確保樣本多樣性,結合 LabelImg 工具完成 VOC 格式…

SQL數據庫操作大全:從基礎到高級查詢技巧

大家好,歡迎來到程序視點!我是你們的老朋友.小二! SQL數據庫操作核心語法精要 數據庫基礎操作 創建/刪除數據庫:CREATE DATABASE / DROP DATABASE 備份SQL Server:使用sp_addumpdevice和BACKUP DATABASE命令 數據庫…

[2025]MySQL的事務機制是什么樣的?redolog,undolog、binog三種日志的區別?二階段提交是什么?ACID怎么保證的?主從復制的過程?

MySQL事務機制與日志系統詳解 一、MySQL事務機制 1. 事務特性(ACID) 特性實現機制原子性(Atomicity)undo log回滾,(事務作為一個整體被執行,包含在其中的對數據庫的操作要么全部被執行,要么都不執行)。一致性(Consistency)約束…

LLama-v2 權重下載

地址:llama模型 官方github倉庫:llama倉庫 注意點 網絡代理位置:美國下面的國家選擇 United States 克隆倉庫后 運行bash download.sh輸入郵箱收到的URL選擇要下載的權重等待下載完成即可 有問題留言!!&#xff01…

zephyr OS架構下構建Nordic MCU boot

目錄 概述 1. 軟硬件環境 1.1 軟件開發環境 1.2 硬件環境 2 MCU boot 2.1 核心功能 2.2 關鍵術語 2.3 重要字段介紹 3 VS-Code下創建MCU-BOOT項目 3.1 軟件框架結構 3.2 創建測試項目 3.3 編譯項目 3.3 固件在Flash中的分布 4 驗證 4.1 燒寫固件 ? 4.2 代碼…

【Mytais系列】介紹、核心概念

MyBatis 是一款優秀的 持久層框架,它通過簡化 JDBC 操作、提供靈活的 SQL 映射能力,成為 Java 開發中處理數據庫交互的核心工具之一。以下是 MyBatis 的核心框架和概念解析: 一、MyBatis 框架概述 1. 核心定位 作用:將 Java 對象…

IO模型和多路復用

一、IO模型的基礎理解 什么是IO? IO全稱是 Input/Output(輸入/輸出),在計算機科學里主要指程序與外部設備(硬盤、網絡、用戶終端等)進行數據交換的操作。首要特點是: IO通常很慢(從CPU和內存的視角看)經常需要等待外部設備響應1. 為什么要談IO模型? 當一個程序需要…

深入理解 Bash 中的 $‘...‘ 字符串語法糖

在 Bash 腳本編程中,字符串處理是不可或缺的一部分。為了讓開發者更高效地處理特殊字符和控制字符,Bash 引入了一種獨特的字符串語法糖:$(帶單引號的 ANSI-C 風格字符串)。這種語法來源于 C 語言的 ANSI-C 標準&#x…

用Python打造自己的專屬命令行工具

在日常的開發和使用過程中,我們常常會編寫一些實用的Python腳本,比如用來批量處理文件、獲取系統信息等。然而,每次都要輸入python script_name.py來運行腳本,時間一長難免覺得繁瑣。要是能像使用系統自帶的命令(如ls、…

【KWDB 創作者計劃】KWDB 2.2.0多模融合架構與分布式時序引擎

KWDB介紹 KWDB數據庫是由開放原子開源基金會孵化的分布式多模數據庫,專為AIoT場景設計,支持時序數據、關系數據和非結構化數據的統一管理。其核心架構采用多模融合引擎,集成列式時序存儲、行式關系存儲及自適應查詢優化器,實現跨模…

學習Linux的第二天

如何在Linux環境下做開發 Linux的一些基操 Tips:平常最表層的是命令行模式,最多見這個默認叫做命令行模式 Vi操作是什么意思呢 就是在提示符輸入vi a.c 是可以創建一個a.c這個文件并進入這個輸入模式 按i可以輸入代碼 要退出的時候按esc 再按:(冒號…

鏈表操作練習

要求 現在有一個雙向鏈表&#xff0c;里面要保存歌曲的名字&#xff1b;例如 蔡琴/渡口.mp3 我們把它定義在一個link.h文件中。 #ifndef LINK_H #define LINK_H #include <stdlib.h> #include <stdio.h> #include <string.h>typedef struct Node {//保存歌…

MATLAB制作散點圖:從基礎到進階的三種類型講解

一、什么是散點圖 散點圖是一種用來展示兩個或多個變量之間關系的圖表形式。它可以幫助我們直觀地觀察變量之間是否存在相關性、趨勢或異常值&#xff0c;常用于數據分析的初步探索階段。 二、三種類型散點圖 1. 基本二維散點圖&#xff1a;最簡單、最常用 基本二維散點圖的…

模塊方法模式(Module Method Pattern)

&#x1f9e0; 模塊方法模式&#xff08;Module Method Pattern&#xff09; 模塊方法模式是一種結構型設計模式&#xff0c;它將復雜的操作分解成一系列相對簡單、獨立且單一職責的模塊。每個模塊負責完成一種具體的操作&#xff0c;其他模塊或系統可以通過調用這些模塊的公開…

Python中的JSON庫,詳細介紹與代碼示例

目錄 1. 前言 2. json 庫基本概念 3. json 的適應場景 4. json 庫的基本用法 4.1 導 json入 模塊 4.2 將 Python 對象轉換為 JSON 字符串 4.3 將 JSON 字符串轉換為 Python 對象 4.4 將 Python 對象寫入 JSON 文件 4.5 從 JSON 文件讀取數據 4.6 json 的其他方法 5.…