Ringkasan LlamaIndex pada Vertex AI untuk RAG

LlamaIndex adalah framework data untuk mengembangkan aplikasi model bahasa besar (LLM) yang didukung konteks. Pengayaan konteks terjadi saat Anda menerapkan LLM ke data. Tindakan ini akan mengimplementasikan pembuatan retrieval-augmented (RAG).

Masalah umum dengan LLM adalah mereka tidak memahami pengetahuan pribadi, yaitu data organisasi Anda. Dengan LlamaIndex di Vertex AI untuk RAG, Anda dapat memperkaya konteks LLM dengan informasi pribadi tambahan, karena model tersebut dapat mengurangi halusinasi dan menjawab pertanyaan dengan lebih akurat.

Dengan menggabungkan sumber pengetahuan tambahan dan pengetahuan yang sudah dimiliki LLM, konteks akan tersedia dengan lebih baik. Konteks yang lebih baik beserta kueri akan meningkatkan kualitas respons LLM.

Konsep berikut adalah kunci untuk memahami LlamaIndex di Vertex AI. Konsep ini tercantum dalam urutan proses pembuatan yang ditingkatkan (RAG).

  1. Penyerapan data: Mengambil data dari berbagai sumber data. Misalnya, file lokal, Cloud Storage, dan Google Drive.

  2. Transformasi data: Konversi data dalam persiapan untuk pengindeksan. Misalnya, data dibagi menjadi beberapa bagian.

  3. Embedding: Representasi numerik dari kata atau potongan teks. Angka-angka ini menangkap makna semantik dan konteks teks. Kata atau teks yang serupa atau terkait cenderung memiliki embedding yang serupa, yang berarti kata atau teks tersebut akan berdekatan dalam ruang vektor berdimensi tinggi.

  4. Pengindeksan data: LlamaIndex di Vertex AI untuk RAG membuat indeks yang disebut korpus. Indeks menyusun pusat informasi agar dioptimalkan untuk penelusuran. Misalnya, indeks seperti daftar isi mendetail untuk buku referensi yang sangat besar.

  5. Pengambilan: Saat pengguna mengajukan pertanyaan atau memberikan perintah, komponen pengambilan di LlamaIndex pada Vertex AI untuk RAG menelusuri basis pengetahuannya untuk menemukan informasi yang relevan dengan kueri.

  6. Generasi: Informasi yang diambil menjadi konteks yang ditambahkan ke kueri pengguna asli sebagai panduan bagi model AI generatif untuk menghasilkan respons yang dasar dan relevan secara faktual.

Halaman ini membantu Anda mulai menggunakan LlamaIndex di Vertex AI untuk RAG dan memberikan contoh Python untuk menunjukkan cara menggunakan RAG API.

Untuk informasi tentang batas ukuran file, lihat Jenis dokumen yang didukung. Untuk mengetahui informasi tentang kuota terkait LlamaIndex di Vertex AI untuk RAG, lihat LlamaIndex di Vertex AI untuk kuota RAG. Untuk mengetahui informasi tentang cara menyesuaikan parameter, lihat Parameter pengambilan.

Menjalankan LlamaIndex di Vertex AI untuk RAG menggunakan Vertex AI SDK

Untuk menggunakan LlamaIndex pada Vertex AI untuk RAG, lakukan langkah berikut:

  1. Instal Vertex AI SDK untuk Python.

  2. Jalankan perintah ini di konsol Google Cloud untuk menyiapkan project Anda.

    gcloud config set {project}

  3. Jalankan perintah ini untuk mengizinkan login Anda.

    gcloud auth application-default login

  4. Salin dan tempel kode contoh ini ke Konsol Google Cloud untuk menjalankan LlamaIndex di Vertex AI.

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Python API.

from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai

# Create a RAG Corpus, Import Files, and Generate a response

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# display_name = "test_corpus"
# paths = ["https://drive.google.com/file/d/123", "gs://my_bucket/my_files_dir"]  # Supports Google Cloud Storage and Google Drive Links

# Initialize Vertex AI API once per session
vertexai.init(project=project_id, location="us-central1")

# Create RagCorpus
# Configure embedding model, for example "text-embedding-004".
embedding_model_config = rag.EmbeddingModelConfig(
    publisher_model="publishers/google/models/text-embedding-004"
)

rag_corpus = rag.create_corpus(
    display_name=display_name,
    embedding_model_config=embedding_model_config,
)

# Import Files to the RagCorpus
response = rag.import_files(
    rag_corpus.name,
    paths,
    chunk_size=512,  # Optional
    chunk_overlap=100,  # Optional
    max_embedding_requests_per_min=900,  # Optional
)

# Direct context retrieval
response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=rag_corpus.name,
            # Supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="What is RAG and why it is helpful?",
    similarity_top_k=10,  # Optional
    vector_distance_threshold=0.5,  # Optional
)
print(response)

# Enhance generation
# Create a RAG retrieval tool
rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=rag_corpus.name,  # Currently only 1 corpus is allowed.
                    # Supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            similarity_top_k=3,  # Optional
            vector_distance_threshold=0.5,  # Optional
        ),
    )
)
# Create a gemini-pro model instance
rag_model = GenerativeModel(
    model_name="gemini-1.5-flash-001", tools=[rag_retrieval_tool]
)

# Generate response
response = rag_model.generate_content("What is RAG and why it is helpful?")
print(response.text)

Model pembuatan yang didukung

Model berikut dan versinya yang mendukung LlamaIndex di Vertex AI meliputi:

Model Versi
Flash Gemini 1.5 gemini-1.5-flash-001
Gemini 1.5 Pro gemini-1.5-pro-001
Gemini 1.0 Pro gemini-1.0-pro-001
gemini-1.0-pro-002
Gemini 1.0 Pro Vision gemini-1.0-pro-vision-001
Gemini gemini-experimental

Model penyematan yang didukung

Versi model berikut adalah model Google yang didukung:

  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001
  • text-embedding-004
  • text-multilingual-embedding-002

Versi model berikut didukung model Google yang telah disesuaikan:

  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001
  • text-embedding-004
  • text-multilingual-embedding-002
  • textembedding-gecko@002
  • textembedding-gecko@001

Jika konfigurasi tidak ditentukan, perilaku defaultnya adalah menggunakan text-embedding-004 untuk pilihan penyematan pada RagCorpus. Untuk mengetahui informasi selengkapnya tentang menyesuaikan model penyematan, lihat Menyesuaikan penyematan teks.

Jenis dokumen yang didukung

Dokumen khusus teks didukung, yang mencakup jenis file berikut dengan batas ukuran file-nya:

Jenis file Batas ukuran file
Dokumen Google 10 MB saat diekspor dari Google Workspace
Google gambar 10 MB saat diekspor dari Google Workspace
Google Slide 10 MB saat diekspor dari Google Workspace
File HTML 10 MB
File JSON 1 MB
{i>File<i} Markdown 10 MB
Slide Microsoft PowerPoint (file PPTX) 10 MB
Dokumen Microsoft Word (file DOCX) 10 MB
{i>File<i} PDF 50 MB
File teks 10 MB

Penggunaan LlamaIndex di Vertex AI untuk RAG dengan jenis dokumen lain dapat dilakukan, tetapi dapat menghasilkan respons yang berkualitas lebih rendah.

Sumber data yang didukung

Ada tiga sumber data yang didukung, termasuk:

  • Upload file tunggal menggunakan upload_file (hingga 25 MB), yang merupakan panggilan sinkron.

  • Impor file dari Cloud Storage.

  • Impor direktori dari Google Drive.

    Akun layanan harus diberi izin yang benar untuk mengimpor file. Jika tidak, tidak ada file yang diimpor dan tidak ada pesan error yang ditampilkan. Untuk informasi selengkapnya tentang batas ukuran file, lihat Jenis dokumen yang didukung.

    Untuk mengautentikasi dan memberikan izin, lakukan hal berikut:

    1. Buka halaman IAM project Google Cloud Anda.
    2. Pilih Sertakan pemberian peran yang disediakan Google.
    3. Telusuri akun layanan Vertex AI RAG Data Service Agent.
    4. Klik Bagikan di folder drive, lalu bagikan ke akun layanan.
    5. Beri Viewer izin ke akun layanan di folder atau file Google Drive Anda. ID resource Google Drive dapat ditemukan di URL web.

Untuk informasi selengkapnya, lihat referensi RAG API.

Transformasi data yang didukung

Setelah dokumen ditransfer, LlamaIndex di Vertex AI untuk RAG akan menjalankan serangkaian transformasi untuk mendapatkan kualitas terbaik, dan terdapat parameter yang dapat dikontrol oleh developer untuk kasus penggunaannya.

Parameter ini mencakup:

Parameter Deskripsi
chunk_size Saat dokumen diserap ke dalam indeks, dokumen akan dibagi menjadi beberapa bagian. Parameter chunk_size (dalam token) menentukan ukuran potongan. Ukuran {i>default<i} untuk potongan adalah 1.024 token.
chunk_overlap Secara {i>default<i}, dokumen dibagi menjadi potongan-potongan dengan sejumlah tumpang tindih tertentu untuk meningkatkan relevansi dan kualitas pengambilan. Tumpang tindih potongan {i>default<i} adalah 200 token.

Ukuran potongan yang lebih kecil berarti embeddingnya lebih tepat. Ukuran potongan yang lebih besar berarti embeddings mungkin lebih umum tetapi dapat melewatkan detail tertentu.

Misalnya, jika Anda mengonversi 200 kata, bukan 1.000 kata, menjadi array embedding dengan dimensi yang sama, Anda dapat kehilangan detailnya. Ini juga merupakan contoh yang bagus saat Anda mempertimbangkan batas panjang konteks model. Sebagian besar mungkin tidak cocok untuk model jendela kecil.

Parameter pengambilan

Tabel berikut menyertakan parameter pengambilan:

Parameter Deskripsi
similarity_top_k Mengontrol jumlah maksimum konteks yang diambil.
vector_distance_threshold Hanya konteks dengan jarak yang lebih kecil dari batas yang akan dipertimbangkan.

Pengelolaan indeks

Korpus adalah kumpulan dokumen atau sumber informasi. Koleksi itu juga disebut sebagai indeks. Indeks ini kemudian dapat dikueri untuk mengambil konteks yang relevan untuk pembuatan LLM. Saat membuat indeks untuk pertama kalinya, proses ini mungkin memerlukan waktu tambahan. Untuk lebih banyak pembuatan indeks dalam project Google Cloud yang sama, prosesnya memerlukan waktu lebih sedikit.

Operasi indeks berikut didukung:

Operasi serentak di korpora tidak didukung. Untuk informasi selengkapnya, lihat referensi RACI API.

Pengelolaan file

Operasi file berikut didukung:

Untuk informasi selengkapnya, lihat referensi RAG API.

Langkah selanjutnya