自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

RAG:如何通過實時數(shù)據(jù)提升AI準確性并減少“幻覺” 原創(chuàng) 精華

發(fā)布于 2024-11-8 09:09
瀏覽
0收藏

?在人工智能的發(fā)展中,內(nèi)容生成的準確性始終是一個重要挑戰(zhàn),特別是當模型生成出看似可信但實際錯誤的回答時,即所謂的“幻覺”(Hallucinations)。為了解決這一問題,出現(xiàn)了一項先進的AI技術(shù)——檢索增強生成(Retrieval-Augmented Generation,簡稱RAG),它通過結(jié)合實時檢索與內(nèi)容生成的雙重能力,顯著提升AI的回答準確性。本文將深入探討RAG的原理、技術(shù)架構(gòu)、向量數(shù)據(jù)庫的應用及其如何減少AI的常見問題,讓讀者全方位了解如何通過RAG實現(xiàn)更可靠、更貼近實際的內(nèi)容生成。

01、RAG的核心理念:什么是檢索增強生成?

簡單來說,RAG是一種通過先檢索再生成來提升回答準確性的AI方法。傳統(tǒng)的AI生成內(nèi)容通?;谀P偷挠柧殧?shù)據(jù),但往往無法反映實時的動態(tài)信息,這可能導致回答與實際情況脫節(jié)。RAG則不同,它首先從知識庫中檢索出與問題相關(guān)的最新信息,然后基于這些信息生成回答。通過將檢索式模型與生成式模型相結(jié)合,RAG不僅顯著提升了內(nèi)容的質(zhì)量和準確性,也增強了模型在自然語言處理任務中的表現(xiàn)。

02、深入解析RAG的架構(gòu)流程

RAG的流程分為兩個主要階段:檢索階段和生成階段。以下為RAG的詳細工作步驟:

1. 檢索階段

  • 輸入:用戶輸入問題或提示,例如“量子計算的最新進展是什么?”。
  • 檢索:系統(tǒng)會在一個知識庫或文檔集合中(通常是向量數(shù)據(jù)庫)進行搜索,通過相似度檢索找到相關(guān)文檔。
  • 返回結(jié)果:系統(tǒng)將檢索出的最相關(guān)的信息片段返回(例如前5或10條最匹配的內(nèi)容)。

2. 生成階段

  • 結(jié)合信息:將檢索到的內(nèi)容與用戶的輸入整合,以提供更加全面的上下文。
  • 生成答案:使用生成式模型(如GPT等)基于這些信息生成回答,同時結(jié)合模型的已有知識與檢索內(nèi)容。
  • 輸出結(jié)果:系統(tǒng)返回基于檢索信息生成的最終回答,確保其準確性和實時性。

RAG:如何通過實時數(shù)據(jù)提升AI準確性并減少“幻覺”-AI.x社區(qū)

這種雙重過程使得RAG生成的回答更具可信度,特別是在知識密集型或需要實時更新的領(lǐng)域中表現(xiàn)出色。

對比RAG與傳統(tǒng)生成模式

在沒有RAG的情況下,傳統(tǒng)AI模型只能依賴已訓練的靜態(tài)數(shù)據(jù)來回答問題,缺乏對新知識的適應能力。這導致了生成的內(nèi)容往往不夠準確,甚至出現(xiàn)“幻覺”或“虛構(gòu)”內(nèi)容。而RAG通過引入實時信息,彌補了這一短板,為AI生成的內(nèi)容增添了時效性和真實性。

03、什么是向量數(shù)據(jù)庫?RAG工作流中的關(guān)鍵角色

向量數(shù)據(jù)庫在RAG的檢索階段中起到至關(guān)重要的作用,它能夠通過語義相似性高效地檢索相關(guān)信息。與傳統(tǒng)的關(guān)鍵詞匹配系統(tǒng)不同,向量數(shù)據(jù)庫將文本轉(zhuǎn)化為高維空間中的向量,并將具有相似含義的文本向量放置在相鄰位置,從而實現(xiàn)更精準的信息檢索。

RAG:如何通過實時數(shù)據(jù)提升AI準確性并減少“幻覺”-AI.x社區(qū)

向量數(shù)據(jù)庫示例

以下為向量數(shù)據(jù)庫中一個數(shù)據(jù)點的結(jié)構(gòu)示例:

{
  "id": 0,
  "vector": [0.01, -0.03, 0.15, ..., -0.08],
  "payload": {
    "company": "Apple Inc.",
    "ticker": "AAPL",
    "price": 175.50,
    "market_cap": "2.8T",
    "industry": "Technology",
    "pe_ratio": 28.5
  }
}

這種結(jié)構(gòu)使得向量數(shù)據(jù)庫能夠以語義相似度而非簡單的關(guān)鍵詞來檢索信息,非常適用于需要快速檢索相關(guān)內(nèi)容的AI系統(tǒng)。

04、RAG常用的距離度量方法

在向量數(shù)據(jù)庫中,為了更準確地匹配信息,系統(tǒng)需要使用距離度量來衡量數(shù)據(jù)點之間的相似性。不同的距離度量適用于不同場景,以下是RAG常用的幾種距離度量方法:

RAG:如何通過實時數(shù)據(jù)提升AI準確性并減少“幻覺”-AI.x社區(qū)

這些度量方法通過計算數(shù)據(jù)點間的相似性,確保RAG能夠找到最匹配的信息,從而生成更精準的回答。 

05、如何利用RAG減少AI幻覺與虛構(gòu)問題?

在AI生成內(nèi)容時,有時會產(chǎn)生“幻覺”,即看似合理但卻錯誤的回答。例如:

  • 問題:“澳大利亞的首都是哪里?”
  • 錯誤回答:“澳大利亞的首都是悉尼?!保ㄕ_答案應為堪培拉)

這類問題源于模型試圖根據(jù)已知的模式來預測回答,卻無法訪問實時或正確的信息。RAG通過將生成過程建立在外部信息檢索之上,從根本上減少了這種錯誤。另外,RAG還能有效應對另一類問題,即“虛構(gòu)”,即AI模型用錯誤的理由來支撐一個回答。RAG通過確保模型生成的內(nèi)容基于實際檢索的數(shù)據(jù),降低了生成不準確信息的風險。

06、RAG實現(xiàn)步驟:從數(shù)據(jù)管理到向量數(shù)據(jù)庫檢索

以下是實現(xiàn)RAG的基本流程:

  • 數(shù)據(jù)管理:整理和驗證用于檢索的數(shù)據(jù),確保數(shù)據(jù)的完整性。
  • 創(chuàng)建并驗證向量嵌入:使用語言模型將文本轉(zhuǎn)化為向量嵌入,以便后續(xù)的相似性匹配。
  • 應用RAG流程:將用戶的查詢轉(zhuǎn)換為向量,檢索數(shù)據(jù)庫并生成回答。

RAG:如何通過實時數(shù)據(jù)提升AI準確性并減少“幻覺”-AI.x社區(qū)


示例:Python實現(xiàn)RAG流程

以下為RAG流程的Python代碼實現(xiàn)步驟:

Step 1:初始設(shè)置與配置

import pandas as pd
from sentence_transformers import SentenceTransformer

# 加載句子嵌入模型
encoder = SentenceTransformer('all-MiniLM-L6-v2')

Step 2:數(shù)據(jù)清洗

# 讀取JSON格式的數(shù)據(jù)
df = pd.read_json('../../stock_data.json')
df = pd.json_normalize(df['stocks'])
df = df[df['company'].notna()]
data = df.to_dict('records')

Step 3:初始化向量數(shù)據(jù)庫

from qdrant_client import QdrantClient

# 創(chuàng)建內(nèi)存中的向量數(shù)據(jù)庫
qdrant = QdrantClient(":memory:")

Step 4:創(chuàng)建向量集合

# 創(chuàng)建集合以存儲向量數(shù)據(jù)
qdrant.recreate_collection(
    collection_name="top_stocks",
    vectors_cnotallow=models.VectorParams(
        size=encoder.get_sentence_embedding_dimension(),
        distance=models.Distance.COSINE
    )
)

Step 5:數(shù)據(jù)向量化并上傳

# 向量化數(shù)據(jù)并上傳至向量數(shù)據(jù)庫
valid_data = [doc for doc in data if isinstance(doc.get("company", ""), str) and doc["company"].strip()]

qdrant.upsert(
    collection_name="top_stocks",
    points=[
        models.PointStruct(
            id=idx,
            vector=encoder.encode(doc["company"]).tolist(),
            payload=doc
        ) for idx, doc in enumerate(valid_data)
    ]
)

Step 6:執(zhí)行查詢并檢索結(jié)果

# 執(zhí)行查詢并獲取相似結(jié)果
query_prompt = "市值較高的科技公司"
query_vector = encoder.encode(query_prompt).tolist()

search_results = qdrant.search(
    collection_name="top_stocks",
    query_vector=query_vector,
    limit=3,
    with_payload=True
)

for result in search_results:
    print(f"公司:{result.payload['company']},行業(yè):{result.payload['industry']},市值:{result.payload['market_cap']}")

結(jié)合檢索結(jié)果進行生成

RAG還可以將檢索結(jié)果傳遞給生成式模型,用于增強回答的準確性。例如:

from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:8080/v1", api_key="your_api_key")

completion = client.chat.completions.create(
    model="LLaMA_CPP",
    messages=[
        {"role": "system", "content": "你是股票領(lǐng)域的專家,幫助用戶選擇股票并回答他們的問題。"},
        {"role": "user", "content": "NVIDIA的市值和市盈率是多少?"},
        {"role": "assistant", "content": str(search_results)}
    ]
)

print(completion.choices[0].message["content"])

通過RAG的檢索增強,回答不僅限于模型訓練的靜態(tài)數(shù)據(jù),還加入了最新的市場動態(tài)信息,使回答更加準確和實時。

07、結(jié)語

在追求AI內(nèi)容生成準確性和可靠性的時代,RAG技術(shù)無疑是一項突破。通過將外部實時數(shù)據(jù)融入到生成過程,RAG顯著降低了“幻覺”和“虛構(gòu)”現(xiàn)象的發(fā)生,使AI生成的回答更具實際意義。結(jié)合向量數(shù)據(jù)庫的語義搜索功能,RAG能夠為用戶提供更相關(guān)、更符合現(xiàn)實的信息。

RAG的檢索與生成相結(jié)合,正推動AI走向更高層次的智能化應用,為需要知識密集型內(nèi)容的場景提供了新的解決方案。

參考:

  1. ??https://arxiv.org/pdf/2005.11401??


本文轉(zhuǎn)載自公眾號Halo咯咯  作者:基咯咯

原文鏈接:??https://mp.weixin.qq.com/s/8Ws6kJIdbIFVhnGlAeS7Qw??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
標簽
收藏
回復
舉報
回復
相關(guān)推薦