Rumah >Peranti teknologi >AI >Cara Meningkatkan Prestasi Rag: 5 Teknik Utama Dengan Contoh

Cara Meningkatkan Prestasi Rag: 5 Teknik Utama Dengan Contoh

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-03-07 09:22:09940semak imbas

Pengambilan Generasi Tambahan (RAG) dengan ketara meningkatkan ketepatan dan kebolehpercayaan model bahasa yang besar (LLM) dengan menggabungkan data luaran. Ini kontekstualisasi jawapan dan membolehkan kemas kini tanpa latihan semula. Walau bagaimanapun, RAG tidak berkesan secara universal. Butiran artikel ini membina saluran paip kain yang mantap, meneroka batasan, dan menawarkan penyelesaian.

Fundamental OpenAI (sebutan ringkas, tidak perlu berkembang)

Ketahui lebih lanjut mengenai menggunakan API OpenAI. Mula sekarang

bagaimana rag berfungsi:

How to Improve RAG Performance: 5 Key Techniques with Examples

(imej dari dokumentasi llamaindex)

saluran paip RAG terdiri daripada tiga peringkat: pengindeksan, pengambilan semula, dan generasi.

  • Pengindeksan: Data (pelbagai format) dibersihkan, ditukar kepada teks biasa, dipotong ke dalam kepingan yang boleh diurus, dan diubah menjadi vektor berangka (embeddings) menggunakan model embedding. Lembaran dan ketulan ini diindeks untuk carian yang cekap.

  • Pengambilan semula: Pertanyaan pengguna vektor menggunakan model embedding yang sama. Sistem ini mengira skor kesamaan antara vektor pertanyaan dan vektor chunk diindeks, mengambil bahagian atas k yang paling serupa.

  • Generasi: Pertanyaan dan ketulan yang diambil diformat ke dalam segera dan diberi makan kepada LLM untuk Generasi Jawapan.

batasan RAG:

Cabaran wujud di setiap peringkat:

  • pengindeksan: data bising membawa kepada respons LLM yang tidak membantu.
  • pengambilan semula: sistem mungkin tidak selalu mengambil ketulan yang relevan.
  • Generasi: Walaupun dengan pengambilan yang baik, LLM mungkin halusinasi jawapan yang salah.

Meningkatkan prestasi RAG:

Tiga strategi utama menangani batasan-batasan ini: chunking, ranking semula, dan transformasi pertanyaan. Berikut ini menunjukkan ini menggunakan Llamaindex dan API OpenAI untuk menjawab soalan mengenai penyertaan Wikipedia (Emma Stone, Ryan Gosling, La La Land).

Sistem RAG BASELINE:

Pasang pakej yang diperlukan:

!pip install llama-index openai wikipedia
Tetapkan kunci API Openai anda:

import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
beban data Wikipedia dan membina indeks:

from llama_index.core import (VectorStoreIndex, ServiceContext, download_loader)
WikipediaReader = download_loader("WikipediaReader")
loader = WikipediaReader()
pages = ['Emma_Stone', 'La_La_Land', 'Ryan_Gosling']
documents = loader.load_data(pages=pages, auto_suggest=False, redirect=False)

from llama_index.llms import OpenAI
from llama_index.embeddings import OpenAIEmbedding, OpenAIEmbeddingModelType
gpt3 = OpenAI(temperature=0, model="gpt-3.5-turbo-instruct", api_key=os.environ["OPENAI_API_KEY"])
embed_model = OpenAIEmbedding(model=OpenAIEmbeddingModelType.TEXT_EMBED_ADA_002, api_key=os.environ["OPENAI_API_KEY"])
service_context_gpt3 = ServiceContext.from_defaults(llm=gpt3, chunk_size=256, chunk_overlap=0, embed_model=embed_model)
index = VectorStoreIndex.from_documents(documents, service_context=service_context_gpt3)
retriever = index.as_retriever(similarity_top_k=3)
Buat templat segera untuk memastikan jawapan berasaskan konteks:

from llama_index.core.prompts import PromptTemplate
template = (
    "We have provided context information below. \n"
    "---------------------\n"
    "{context_str}"
    "\n---------------------\n"
    "Given this information, please answer the question: {query_str}\n"
    "Don't give an answer unless it is supported by the context above.\n"
)
qa_template = PromptTemplate(template)
(pertanyaan awal dan tindak balas subpar ditinggalkan untuk keringkasan. Tumpuannya adalah pada strategi penambahbaikan.)

Memperbaiki dengan Chunking:

Laraskan

dan chunk_size dalam chunk_overlap untuk mengoptimumkan pengambilan semula. service_context_gpt3

Memperbaiki dengan peringkat semula:

(Contoh kod untuk flagembeddingreranker dan rankgptreRank ditinggalkan untuk keringkasan, tetapi penerangan tetap)

  • flagembeddingreranker: menggunakan model ranking wajah yang memeluk (mis., BAAI/bge-reranker-base) untuk meningkatkan kaitan bahagian. Memerlukan token akses muka yang memeluk.

  • RankgptreRank: menggunakan LLM (mis., gpt-3.5-turbo-0125

Memperbaiki dengan transformasi pertanyaan:

(Contoh kod untuk transformasi pertanyaan hyde dan multi-step ditinggalkan untuk keringkasan, tetapi penerangan tetap)

  • Hyde (embeddings dokumen hipotetikal):

    menghasilkan jawapan hipotetikal, mewujudkan embeddings untuk kedua -dua pertanyaan dan jawapan hipotetikal, dan mengambil dokumen yang paling dekat dengan embeddings ini.

  • transformasi pertanyaan multi-langkah:
  • memecahkan pertanyaan kompleks ke dalam sub-Queries yang lebih mudah untuk pemprosesan yang lebih berkesan.

  • Kesimpulan:

Artikel ini mempamerkan beberapa teknik untuk meningkatkan prestasi RAG. Pendekatan optimum bergantung kepada aplikasi tertentu dan hasil yang diinginkan. Penjelajahan RAG lebih lanjut boleh didapati di [pautan ke video bersama-sama di sini].

Atas ialah kandungan terperinci Cara Meningkatkan Prestasi Rag: 5 Teknik Utama Dengan Contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn