Pengambilan dan peringkat

Halaman ini menjelaskan pemeringkatan ulang dan menunjukkan cara menggunakan API untuk memeringkat ulang respons yang diambil.

Pembuatan peringkat ulang pasca-pengambilan adalah teknik yang meningkatkan relevansi hasil pengambilan. Mesin RAG Vertex AI menawarkan pemeringkat ulang opsional yang meningkatkan relevansi hasil yang diambil selama kueri. Reranker menilai relevansi bagian dari kueri dan mengurutkan ulang hasilnya. Urutan baru mengarah ke respons yang lebih sesuai sebagai respons terhadap kueri atau dapat disertakan dalam perintah untuk inferensi model guna menghasilkan respons yang lebih relevan dan akurat.

Reranker yang Tersedia

Bagian ini membahas jenis pemeringkat ulang.

Reranker LLM

Reranker LLM adalah reranker yang menggunakan LLM untuk menilai relevansi bagian dengan kueri dan mengurutkan ulang hasil yang sesuai, sehingga menghasilkan respons yang lebih sesuai atau perintah yang ditingkatkan untuk inferensi model.

Pengurut ulang layanan peringkat Vertex AI

Reranker layanan peringkat didasarkan pada API peringkat yang mengambil daftar dokumen dan mengurutkan ulang dokumen tersebut berdasarkan relevansi dokumen dengan kueri. Dibandingkan dengan penyematan, yang hanya melihat kemiripan semantik dokumen dan kueri, hal ini dapat memberi Anda skor yang akurat tentang seberapa baik dokumen menjawab kueri tertentu.

Cara menggunakan pemeringkat ulang

Bagian ini menyajikan prasyarat dan contoh kode untuk menggunakan pemeringkat ulang.

Prasyarat untuk menggunakan pemeringkat ulang LLM

Reranker LLM hanya mendukung model Gemini, yang dapat diakses saat RAG API diaktifkan. Untuk melihat daftar model yang didukung, lihat model Gemini.

Mengambil konteks yang relevan menggunakan RAG API

Contoh kode ini menunjukkan cara mengambil konteks yang relevan menggunakan RAG API.

REST

Ganti variabel berikut yang digunakan dalam contoh kode:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Teks kueri untuk mendapatkan konteks yang relevan.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
  -d '{
    "vertex_rag_store": {
      "rag_resources": {
          "rag_corpus": """RAG_CORPUS_RESOURCE"
        }
    },
    "query": {
      "text": "TEXT",
      "rag_retrieval_config": {
        "top_k": 10,
        "ranking": {
          "llm_ranker": {
            "model_name": "MODEL_NAME"
          }
        }
      }
    }
  }'

Python

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

Ganti variabel berikut yang digunakan dalam contoh kode:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Teks kueri untuk mendapatkan konteks yang relevan.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/[RAG_CORPUS_ID]"
MODEL_NAME= "MODEL_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_retrieval_config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        llm_ranker=rag.LlmRanker(
            model_name=MODEL_NAME
        )
    )
)

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=CORPUS_NAME,
        )
    ],
    text="TEXT",
    rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Membuat konten menggunakan RAG API

REST

Untuk membuat konten menggunakan model Gemini, lakukan panggilan ke Vertex AI GenerateContent API. Dengan menentukan RAG_CORPUS_RESOURCE dalam permintaan, model akan otomatis mengambil data dari Penelusuran Vertex AI.

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • MODEL_ID: Model LLM untuk pembuatan konten. Contohnya, gemini-1.5-flash-002.
  • GENERATION_METHOD: Metode LLM untuk pembuatan konten. Opsi adalah generateContent dan streamGenerateContent.
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. Gunakan perintah yang relevan dengan dokumen di Vertex AI Search.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opsional: Jumlah konteks teratas yang akan diambil.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
  "contents": {
    "role": "user",
    "parts": {
      "text": "INPUT_PROMPT"
    }
  },
  "tools": {
    "retrieval": {
      "disable_attribution": false,
      "vertex_rag_store": {
        "rag_resources": {
            "rag_corpus": "RAG_CORPUS_RESOURCE"
          },
        "rag_retrieval_config": {
          "top_k": 10,
          "ranking": {
            "llm_ranker": {
              "model_name": "MODEL_NAME"
            }
          }
        }
      }
    }
  }
}'

Python

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

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • MODEL_ID: Model LLM untuk pembuatan konten. Contohnya, gemini-1.5-flash-002.
  • GENERATION_METHOD: Metode LLM untuk pembuatan konten. Opsi adalah generateContent dan streamGenerateContent.
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. Gunakan perintah yang relevan dengan dokumen di Vertex AI Search.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opsional: Jumlah konteks teratas yang akan diambil.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

config = vertexai.preview.rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        llm_ranker=rag.LlmRanker(
            model_name=MODEL_NAME
        )
    )
)

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=CORPUS_NAME,
                )
            ],
            rag_retrieval_config=config
        ),
    )
)

rag_model = GenerativeModel(
    model_name=MODEL_NAME, tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Prasyarat reranker layanan peringkat Vertex

Untuk menggunakan reranker layanan peringkat Vertex AI, Discovery Engine API harus diaktifkan.

Mengambil konteks yang relevan menggunakan RAG API

Setelah Anda membuat korpus RAG, konteks yang relevan dapat diambil dari Vertex AI Search melalui RetrieveContexts API.

Contoh kode ini menunjukkan cara menggunakan API untuk mengambil konteks dari Vertex AI Search.

REST

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan Anda.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Teks kueri untuk mendapatkan konteks yang relevan.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
  -d '{
    "vertex_rag_store": {
      "rag_resources": {
          "rag_corpus": "RAG_CORPUS_RESOURCE"
        }
    },
    "query": {
      "text": "TEXT",
      "rag_retrieval_config": {
        "top_k": 5,
        "ranking": {
          "rank_service": {
            "model_name": "MODEL_NAME"
          }
        }
      }
    }
  }'

Python

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

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan Anda.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • TEXT: Teks kueri untuk mendapatkan konteks yang relevan.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_retrieval_config = rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        rank_service=rag.RankService(
            model_name=MODEL_NAME
        )
    )
)
response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=CORPUS_NAME,
        )
    ],
    text="TEXT",
    rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Membuat konten menggunakan RAG API

REST

Untuk membuat konten menggunakan model Gemini, lakukan panggilan ke Vertex AI GenerateContent API. Dengan menentukan RAG_CORPUS_RESOURCE dalam permintaan, model akan otomatis mengambil data dari Penelusuran Vertex AI.

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • MODEL_ID: Model LLM untuk pembuatan konten. Contohnya, gemini-1.5-flash-002.
  • GENERATION_METHOD: Metode LLM untuk pembuatan konten. Opsi mencakup generateContent dan streamGenerateContent.
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. Gunakan perintah yang relevan dengan dokumen di Vertex AI Search.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opsional: Jumlah konteks teratas yang akan diambil.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
  "contents": {
    "role": "user",
    "parts": {
      "text": "INPUT_PROMPT"
    }
  },
  "tools": {
    "retrieval": {
      "disable_attribution": false,
      "vertex_rag_store": {
        "rag_resources": {
            "rag_corpus": "RAG_CORPUS_RESOURCE"
          },
        "rag_retrieval_config": {
          "top_k": 10,
          "ranking": {
            "rank_service": {
              "model_name": "MODEL_NAME"
            }
          }
        }
      }
    }
  }
}'

Python

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

Ganti variabel berikut yang digunakan dalam kode contoh:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region untuk memproses permintaan.
  • MODEL_ID: Model LLM untuk pembuatan konten. Contohnya, gemini-1.5-flash-002.
  • GENERATION_METHOD: Metode LLM untuk pembuatan konten. Opsi mencakup generateContent dan streamGenerateContent.
  • INPUT_PROMPT: Teks yang dikirim ke LLM untuk pembuatan konten. Gunakan perintah yang relevan dengan dokumen di Vertex AI Search.
  • RAG_CORPUS_RESOURCE: Nama resource korpus RAG.
    Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opsional: Jumlah konteks teratas yang akan diambil.
  • MODEL_NAME: Nama model yang digunakan untuk pemeringkatan ulang.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

config = vertexai.preview.rag.RagRetrievalConfig(
    top_k=10,
    ranking=rag.Ranking(
        rank_service=rag.RankService(
            model_name=MODEL_NAME
        )
    )
)

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=CORPUS_NAME,
                )
            ],
            rag_retrieval_config=config
        ),
    )
)

rag_model = GenerativeModel(
    model_name="MODEL_NAME", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("INPUT_PROMPT")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Langkah selanjutnya