成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

最大邊際相關性MMR:提升RAG檢索結果的多樣性與實用性

發布于 2025-4-24 07:18
瀏覽
0收藏

在RAG系統中,僅靠向量相似度檢索容易造成信息重復或片面。為提升回答的多樣性與覆蓋度,引入MMR(Maximum Marginal Relevance)算法能有效在“相關性”與“多樣性”之間取得平衡,從而挑選出既相關又不重復的信息,提升系統輸出的質量與實用性。

  • 1. MMR 是什么,它能解決什么問題?
  • 2. MMR 的基本思想
  • 3. MMR 的原理和公式解析

3.1 算法流程

3.2 舉個例子:摘要任務中的 MMR

  • 4. MMR 的應用場景
  • 4.1. 信息檢索(比如搜索引擎的結果排序)

  • 4.2. 問答系統(從多個候選答案中挑出信息最豐富的)

  • 5. 代碼測試

  • 5.1  標準相似度檢索 (Top 5)

  • 5.2  MMR檢索 (lambda=0.3, k=5, fetch_k=10)

  • 5.3  MMR檢索 (lambda=0.7, k=5, fetch_k=10)

在 RAG(Retrieval-Augmented Generation)系統中,檢索階段決定了最終生成內容的"信息來源"。

但僅靠向量相似度進行 top-k 檢索,可能會出現內容重復、信息集中于單一角度的問題,導致模型生成的回答缺乏多樣性和覆蓋度。這時,僅僅"相關"還不夠,我們更希望檢索結果是"既相關又多樣"。

為了解決這個問題,引入 Maximum Marginal Relevance(MMR) 可以有效地在相關性與多樣性之間取得平衡,優化檢索結果的質量,提升最終回答的豐富性和實用性。

1. MMR 是什么,它能解決什么問題?

Maximum Marginal Relevance(MMR) 是一種排序算法,主要用于在信息檢索、推薦系統和摘要生成等任務中,選擇既相關又不重復的內容。

放到RAG的場景中,傳統的排序方法往往只關注內容的相關性(即與查詢的匹配度)。但如果我們只是單純地根據相關性來排序,可能會出現以下問題:

  • 重復內容:比如在推薦系統中,推薦的內容過于相似,用戶感受不到新鮮感。
  • 信息不全面:有些系統可能過于關注某一個領域或話題,導致用戶只能看到片面的信息。

MMR 的核心思想是:在確保相關性的同時,增加多樣性,從而提供更全面、更豐富的結果。

簡單來說就是:在一堆候選內容里,優先選那些既跟用戶查詢相關、又跟已經選過的內容不重復的條目。

我們可以這么理解它的"目的"—— MMR = "給你想要的 + 避免你已經看過的"。

假設你正在使用一個新聞推薦系統,輸入了"人工智能"的關鍵詞。傳統的推薦系統可能推薦多篇關于"人工智能在醫療行業應用"的文章,而這些文章的內容高度相似。

使用 MMR 后,系統可能會推薦:

  • 一篇講人工智能醫療應用的文章,
  • 一篇講人工智能教育領域的文章,
  • 一篇關于人工智能倫理問題的文章。

這樣,用戶既能獲得與主題相關的信息,又能了解該領域的不同視角,避免了重復。

2. MMR 的基本思想

這里面涉及到兩個關鍵詞:相關性(Relevance) 和 多樣性(Diversity)。這兩個聽起來像是在"打架",但其實在信息排序里,它們是缺一不可的搭檔。

相關性是基礎,但不夠

相關性很好理解,就是某個內容跟用戶查詢、興趣、目標之間的匹配程度。比如你搜"機器學習",當然不希望系統推"烘焙教程"給你。這就是相關性在起作用。

但如果系統一味追求相關性,就會出現一個問題:內容集中在一個點上,很快就"重復"了。你看著看著就會覺得:"這些不是都差不多嗎?"

多樣性讓信息更豐富

多樣性指的是結果之間的差異程度。如果推薦的每條內容都從不同角度切入,比如一個講原理、一個講應用、一個講未來趨勢,那你看完之后會感覺信息更全面、更有收獲。

相關性保證你"看對東西",多樣性保證你"看到不同的東西"。

全是相關但重復的內容,沒用;全是多樣但不相關的內容,也沒用。

所以,MMR 的目標就很明確了:

從一堆候選內容里,挑出那些既"與查詢高度相關",又"跟已經選過的內容不重復"的條目。

它在每一步選下一個內容時,都會去權衡:

  • 這個內容本身和用戶需求有多匹配?
  • 它是不是和我們已經選過的那些內容太像了?

MMR 做的就是在這兩者之間找一個平衡點。換句話說,它每次都想選一個"有新意"的好內容,而不是簡單地把"最相關的那幾個"一股腦推出來。

你可以把 MMR 想成一個"懂信息又懂用戶心理"的策展人:

它會說,"這個你可能還沒看過,但跟你想要的很有關,而且比之前那些不一樣,值的一看。"

因此,MMR 的核心目標是:選出既相關又不重復的內容

3. MMR 的原理和公式解析

最大邊際相關性MMR:提升RAG檢索結果的多樣性與實用性-AI.x社區

3.1 算法流程

最大邊際相關性MMR:提升RAG檢索結果的多樣性與實用性-AI.x社區

3.2 舉個例子:摘要任務中的 MMR

假設我們有一篇長文章,要從中選出三句話組成一個簡短摘要。我們手頭有五個候選句子,編號:S1、S2、S3、S4、S5。

最大邊際相關性MMR:提升RAG檢索結果的多樣性與實用性-AI.x社區

第一次迭代候選集合:

最大邊際相關性MMR:提升RAG檢索結果的多樣性與實用性-AI.x社區


選擇MMR得分最高的句子S4加入已選集合

雖然S2和S3都很"相關",但S4的MMR得分最高,因此選擇S4。

集合狀態更新:

已選集合: {S1, S4}

候選集合: {S2, S3, S5}

第二次迭代候選集合:

最大邊際相關性MMR:提升RAG檢索結果的多樣性與實用性-AI.x社區

選擇MMR得分最高的句子S3加入已選集合

在剩余的句子中,S3的MMR得分最高(0.405),因此選擇S3。

集合狀態更新:

已選集合: {S1, S4, S3}

候選集合: {S2, S5}

最終選出的3句話為:S1, S4, S3

4. MMR 的應用場景

4.1. 信息檢索(比如搜索引擎的結果排序)

你在搜索引擎上輸入一個關鍵詞,比如"ChatGPT 應用案例",后臺系統一下子找到了幾百上千條相關網頁。

如果我們只看"相關性",那前幾條可能都是講"教育場景下怎么用 ChatGPT"的,雖然都對,但你可能會覺得太集中、太重復了。

用上 MMR 之后,系統就會在相關的基礎上,讓展示結果更有"層次":

  • 第一條是講教育的,
  • 第二條可能是講法律行業,
  • 第三條是開發者怎么集成 ChatGPT,
  • 第四條可能是講它帶來的倫理問題。

4.2. 問答系統(從多個候選答案中挑出信息最豐富的)

比如你問一個比較開放的問題,比如"人工智能未來會帶來哪些改變?"

系統可能從數據庫或模型里找出了 10 個可能的回答。

MMR 在這時候就能幫上忙:不是簡單地把"重復最多"的答案往上排,而是挑出互補的信息,比如:

  • 一個說對就業的影響,
  • 一個說對教育的影響,
  • 一個說技術發展的潛力……

其他還可以用到:推薦系統(避免推相似內容)、文本摘要(避免重復句子)

5. 代碼測試

# 導入操作系統模塊
import os

# 設置OpenAI API密鑰
# 注意:在實際應用中,請勿硬編碼API密鑰。建議使用環境變量或其他安全方式管理密鑰。
OPENAI_API_KEY = 'hk-iwtbie4a91e427'# 示例密鑰,請替換為您自己的有效密鑰

# 將API密鑰設置為環境變量
os.environ['OpenAI_API_KEY'] = OPENAI_API_KEY

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

# 定義一個包含示例文本的列表,這些文本將被嵌入并存儲到向量數據庫中
texts = [
    "大語言模型(LLM)是基于Transformer架構的深度學習模型。", # 關于LLM的定義
    "LLM的核心是Transformer架構,這是一種強大的深度學習技術。", # 與上一句相似
    "基于Transformer的LLM在自然語言處理任務中表現出色。", # 與第一句相似
    "LLM通過在海量文本數據上進行預訓練來學習語言模式。", # LLM的訓練方式
    "預訓練使得LLM能夠掌握豐富的語言知識和世界常識。", # 與上一句相似
    "LLM展現出強大的自然語言理解和生成能力。", # LLM的能力
    "理解和生成自然語言是LLM的核心功能之一。", # 與上一句相似
    "像GPT-4這樣的LLM可以執行翻譯、摘要和問答等多種任務。", # LLM的應用
    "LLM在文本翻譯、內容摘要和智能問答方面有廣泛應用。", # 與上一句相似
    "人工智能(AI)是一個更廣泛的領域,LLM是其中的一個子集。", # LLM與AI的關系
    "AI的目標是創造能夠像人類一樣思考和行動的機器。"# AI的目標
]

# 初始化OpenAI嵌入模型,指定模型名稱和API基礎URL
embeddings = OpenAIEmbeddings(model="text-embedding-3-large", base_url="https://api.openai-hk.com/v1")
# 使用Chroma類的from_texts方法創建向量存儲
vectorstore = Chroma.from_texts(
    texts=texts, # 需要嵌入和存儲的文本列表
    embedding=embeddings, # 用于生成嵌入的嵌入模型實例
    persist_directory="./chroma_db"# 指定持久化存儲向量數據的目錄
)

# 定義一個查詢字符串,用于在向量數據庫中進行搜索
query = '什么是大語言模型以及它們能做什么?'

print("========================= 相似度檢索 ============================")
# 使用向量存儲的similarity_search方法執行相似度檢索
t1 = vectorstore.similarity_search(query, k=5) # k=5表示返回最相似的5個結果
# 打印相似度檢索的結果
print(t1)

# 標識MMR檢索(lambda=0.3)部分的開始
print("========================= MMR lambda=0.3 ============================")
# 使用向量存儲的max_marginal_relevance_search方法執行MMR檢索
t2 = vectorstore.max_marginal_relevance_search(query, k=5, fetch_k=10, lambda_mult=0.3)
# k=5表示最終返回5個結果,fetch_k=10表示初始獲取10個相似結果進行MMR計算,lambda_mult=0.3控制多樣性與相似度的權衡
# 打印MMR檢索(lambda=0.3)的結果
print(t2)

# 標識MMR檢索(lambda=0.7)部分的開始
print("========================= MMR lambda=0.7 ============================")
# 使用向量存儲的max_marginal_relevance_search方法執行MMR檢索
t3 = vectorstore.max_marginal_relevance_search(query, k=5, fetch_k=10, lambda_mult=0.7)
# k=5表示最終返回5個結果,fetch_k=10表示初始獲取10個相似結果進行MMR計算,lambda_mult=0.7控制多樣性與相似度的權衡
# 打印MMR檢索(lambda=0.7)的結果
print(t3)

運行結果:

========================= 相似度檢索 =============================
[Document(id='76a37d7d-4f9e-43ca-8ca1-396fd5a956bc', metadata={}, page_content='大語言模型(LLM)是基于Transformer架構的深度學習模型。'), 
Document(id='9f76337c-3f6c-4c14-81e5-399338e30938', metadata={}, page_content='LLM通過在海量文本數據上進行預訓練來學習語言模式。'), 
Document(id='23717671-2353-4daa-a30f-80ce191cfb90', metadata={}, page_content='理解和生成自然語言是LLM的核心功能之一。'), 
Document(id='f5a64fe0-b616-4a02-b932-ea1d6f7a1217', metadata={}, page_content='LLM展現出強大的自然語言理解和生成能力。'), 
Document(id='c6237dc4-4087-4eee-b838-a2392a3ef993', metadata={}, page_content='基于Transformer的LLM在自然語言處理任務中表現出色。')]
========================= MMR lambda=0.3 =============================
[Document(id='76a37d7d-4f9e-43ca-8ca1-396fd5a956bc', metadata={}, page_content='大語言模型(LLM)是基于Transformer架構的深度學習模型。'), 
Document(id='f5a64fe0-b616-4a02-b932-ea1d6f7a1217', metadata={}, page_content='LLM展現出強大的自然語言理解和生成能力。'), 
Document(id='4a3a8219-8065-4d74-b7ce-187f16e87ecf', metadata={}, page_content='像GPT-4這樣的LLM可以執行翻譯、摘要和問答等多種任務。'), 
Document(id='fc2b9c7a-c63c-4c7b-a153-eece2d6bb02e', metadata={}, page_content='預訓練使得LLM能夠掌握豐富的語言知識和世界常識。'), 
Document(id='d0cbe326-c4c0-4252-9636-eef7bed06379', metadata={}, page_content='人工智能(AI)是一個更廣泛的領域,LLM是其中的一個子集。')]
========================= MMR lambda=0.7 =============================
[Document(id='76a37d7d-4f9e-43ca-8ca1-396fd5a956bc', metadata={}, page_content='大語言模型(LLM)是基于Transformer架構的深度學習模型。'), 
Document(id='9f76337c-3f6c-4c14-81e5-399338e30938', metadata={}, page_content='LLM通過在海量文本數據上進行預訓練來學習語言模式。'), 
Document(id='23717671-2353-4daa-a30f-80ce191cfb90', metadata={}, page_content='理解和生成自然語言是LLM的核心功能之一。'), 
Document(id='f5a64fe0-b616-4a02-b932-ea1d6f7a1217', metadata={}, page_content='LLM展現出強大的自然語言理解和生成能力。'), 
Document(id='4a3a8219-8065-4d74-b7ce-187f16e87ecf', metadata={}, page_content='像GPT-4這樣的LLM可以執行翻譯、摘要和問答等多種任務。')]

5.1  標準相似度檢索 (Top 5)

這種策略旨在找出與查詢最相似的文檔。

結果特點:

  • 高度相關:檢索到的文檔都與"大語言模型"的定義、架構和能力直接相關。
  • 潛在冗余:部分文檔內容相似度較高,例如都提到了 Transformer 架構或自然語言處理能力。

5.2  MMR檢索 (lambda=0.3, k=5, fetch_k=10)

較低的 ??lambda?? 值 (0.3) 更側重于 多樣性

結果特點:

  • 平衡性:保留了最相關的文檔,同時引入了更多不同方面的信息,如具體應用、訓練方法和與 AI 的關系。
  • 較低冗余:相比純相似度檢索,結果的重復性較低。

5.3  MMR檢索 (lambda=0.7, k=5, fetch_k=10)

較高的 ??lambda?? 值 (0.7) 更側重于 相關性

結果特點:

  • 高相關性:結果與標準相似度檢索非常接近,保留了大部分最相似的文檔。
  • 有限多樣性:相比??lambda=0.3??,多樣性較低,但仍比純相似度檢索略高,引入了關于 LLM 具體任務的文檔。

MMR 的核心價值在于 提升結果的多樣性,確保返回的內容既相關又有足夠的多樣性。在推薦系統、摘要生成、問答系統等多個場景中,MMR 都能有效避免重復,提升用戶體驗。

本文轉載自???AI取經路???,作者:AI取經路

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 最近日韩中文字幕 | 国产精品久久久久影院色老大 | 天天宗合网| 精品毛片在线观看 | 亚洲精品一区av在线播放 | 欧美国产日韩精品 | 午夜免费视频 | 在线国产一区二区 | 天堂av中文 | 亚洲精品二区 | 欧美成人自拍 | 久久久久久美女 | 午夜男人天堂 | 嫩草黄色影院 | 欧美日韩在线一区二区 | 亚洲欧美一区二区三区在线 | 国产精品永久久久久久久www | 自拍 亚洲 欧美 老师 丝袜 | 久久爱综合 | 狠狠的干狠狠的操 | www.蜜桃av | 看a网站| 久久合久久 | 国产精品av久久久久久久久久 | 亚洲国产一区二区三区, | 美女天天操 | 国产精选一区 | 欧美啊v在线观看 | av免费网址 | 日韩a v在线免费观看 | 欧美日韩亚洲二区 | 欧美一区久久 | 久久国内精品 | 国产精品久久久久久福利一牛影视 | 久久人体| 日韩视频a | 成人在线视| 第四色狠狠 | 美女131mm久久爽爽免费 | 日韩毛片视频 | 亚洲精品综合一区二区 |