<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=AWS%3A_LLM_HuggingFace_RAG</id>
	<title>AWS: LLM HuggingFace RAG - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=AWS%3A_LLM_HuggingFace_RAG"/>
	<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=AWS:_LLM_HuggingFace_RAG&amp;action=history"/>
	<updated>2026-04-19T23:42:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=AWS:_LLM_HuggingFace_RAG&amp;diff=71330&amp;oldid=prev</id>
		<title>Unknown user: /* Tips: */</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=AWS:_LLM_HuggingFace_RAG&amp;diff=71330&amp;oldid=prev"/>
		<updated>2024-12-16T01:11:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Tips:&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:11, 16 December 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l139&quot;&gt;Line 139:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 139:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dengan langkah-langkah di atas, Anda akan memiliki pipeline RAG sederhana: dokumen disimpan, diencode menjadi embedding, diindeks, dan pada saat query masuk, sistem akan melakukan retrieval sebelum mengumpankan konteks ke LLM yang dijalankan di AWS.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dengan langkah-langkah di atas, Anda akan memiliki pipeline RAG sederhana: dokumen disimpan, diencode menjadi embedding, diindeks, dan pada saat query masuk, sistem akan melakukan retrieval sebelum mengumpankan konteks ke LLM yang dijalankan di AWS.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Pranala Menarik==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[AWS]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=AWS:_LLM_HuggingFace_RAG&amp;diff=71329&amp;oldid=prev</id>
		<title>Unknown user: Created page with &quot;Berikut adalah panduan umum dan langkah-langkah yang dapat Anda ambil untuk membangun pipeline Retrieval Augmented Generation (RAG) sederhana menggunakan LLM dari Hugging Face...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=AWS:_LLM_HuggingFace_RAG&amp;diff=71329&amp;oldid=prev"/>
		<updated>2024-12-15T23:48:07Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Berikut adalah panduan umum dan langkah-langkah yang dapat Anda ambil untuk membangun pipeline Retrieval Augmented Generation (RAG) sederhana menggunakan LLM dari Hugging Face...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Berikut adalah panduan umum dan langkah-langkah yang dapat Anda ambil untuk membangun pipeline Retrieval Augmented Generation (RAG) sederhana menggunakan LLM dari Hugging Face di lingkungan AWS. Pendekatan ini tidak satu-satunya, namun dapat menjadi starting point yang solid.&lt;br /&gt;
&lt;br /&gt;
==Konsep Dasar RAG:==&lt;br /&gt;
RAG umumnya melibatkan dua bagian utama:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Retrieval (Pengambilan Informasi):&amp;#039;&amp;#039;&amp;#039; Mengambil dokumen atau informasi relevan dari suatu knowledge base (misalnya kumpulan dokumen yang telah diindeks dan diembedding ke dalam vector store).  &lt;br /&gt;
   &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Augmented Generation (Pengayaan Prompt):&amp;#039;&amp;#039;&amp;#039; Menggabungkan hasil retrieval tersebut ke dalam prompt yang diberikan ke model bahasa (LLM), sehingga model dapat memberikan jawaban yang kontekstual dan lebih akurat.&lt;br /&gt;
&lt;br /&gt;
==Lingkungan AWS yang Bisa Digunakan:==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Amazon EC2 atau Amazon SageMaker:&amp;#039;&amp;#039;&amp;#039; Untuk men-deploy model LLM Hugging Face.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Amazon S3:&amp;#039;&amp;#039;&amp;#039; Untuk menyimpan data dokumen asli, model checkpoint, maupun embedding hasil proses.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Layanan untuk Vector Store:&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Amazon OpenSearch Service dengan plugin vector search&amp;#039;&amp;#039;&amp;#039;: Anda dapat mengindeks embedding dokumen di sini.  &lt;br /&gt;
** Alternatifnya, Anda bisa menggunakan basis data terkelola lain yang mendukung vector search, atau bahkan menyimpan embedding di database sendiri (misalnya DynamoDB) dan memprosesnya dengan FAISS secara manual di dalam container.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Amazon Lambda / AWS API Gateway (opsional):&amp;#039;&amp;#039;&amp;#039; Untuk menyiapkan endpoint yang memproses query user, melakukan retrieval, lalu memanggil model.&lt;br /&gt;
&lt;br /&gt;
==Langkah-Langkah Detail:==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Persiapan Model LLM di AWS:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Anda dapat memulai dengan model open-source LLM dari Hugging Face Hub (misalnya Llama 2, Falcon, atau Dolly) yang telah tersedia di SageMaker JumpStart.  &lt;br /&gt;
** Jika Anda ingin menggunakan model custom dari Hugging Face, Anda dapat:  &lt;br /&gt;
** Unduh model dan simpan ke Amazon S3, lalu gunakan SageMaker untuk men-deploy container inference Hugging Face.  &lt;br /&gt;
** SageMaker menyediakan `HuggingFaceModel` yang memudahkan proses ini:  &lt;br /&gt;
&lt;br /&gt;
 from sagemaker.huggingface import HuggingFaceModel&lt;br /&gt;
 &lt;br /&gt;
 huggingface_model = HuggingFaceModel(&lt;br /&gt;
      model_data=&amp;#039;s3://bucket-name/path/to/model.tar.gz&amp;#039;,&lt;br /&gt;
      role=&amp;#039;arn:aws:iam::111122223333:role/SageMakerRole&amp;#039;,&lt;br /&gt;
      transformers_version=&amp;#039;4.17&amp;#039;,&lt;br /&gt;
      pytorch_version=&amp;#039;1.10&amp;#039;,&lt;br /&gt;
      py_version=&amp;#039;py38&amp;#039;&lt;br /&gt;
  )&lt;br /&gt;
 &lt;br /&gt;
 predictor = huggingface_model.deploy(&lt;br /&gt;
      initial_instance_count=1,&lt;br /&gt;
      instance_type=&amp;#039;ml.g4dn.xlarge&amp;#039;&lt;br /&gt;
  )&lt;br /&gt;
&lt;br /&gt;
* Pastikan Anda sudah menyesuaikan tipe instance dengan kebutuhan GPU/CPU.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Membangun Vector Embedding untuk Dokumen:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Ambil kumpulan dokumen (misalnya teks, PDF yang sudah diekstrak isinya, dsb.) dan simpan di Amazon S3.&lt;br /&gt;
** Gunakan model embedding (misalnya `sentence-transformers` atau `Instructor Embeddings`) untuk mengubah teks menjadi embedding vektor. Anda dapat melakukan ini secara offline di EC2 atau job SageMaker Processing:&lt;br /&gt;
&lt;br /&gt;
 from sentence_transformers import SentenceTransformer&lt;br /&gt;
 &lt;br /&gt;
 model = SentenceTransformer(&amp;#039;sentence-transformers/all-mpnet-base-v2&amp;#039;)&lt;br /&gt;
 documents = [&amp;quot;Teks dokumen 1&amp;quot;, &amp;quot;Teks dokumen 2&amp;quot;, &amp;quot;Teks dokumen N&amp;quot;]&lt;br /&gt;
 embeddings = model.encode(documents)&lt;br /&gt;
&lt;br /&gt;
** Simpan hasil embedding ke S3 atau langsung indeks ke Amazon OpenSearch.&lt;br /&gt;
&lt;br /&gt;
3. &amp;#039;&amp;#039;&amp;#039;Membuat Index Vector Store di Amazon OpenSearch:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   - Buat domain Amazon OpenSearch dengan fitur vector search diaktifkan.&lt;br /&gt;
   - Buat index untuk dokumen:&lt;br /&gt;
h&lt;br /&gt;
     PUT my-index&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;mappings&amp;quot;: {&lt;br /&gt;
         &amp;quot;properties&amp;quot;: {&lt;br /&gt;
           &amp;quot;text&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;},&lt;br /&gt;
           &amp;quot;embedding&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;knn_vector&amp;quot;, &amp;quot;dimension&amp;quot;: 768} &lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     (Dimension menyesuaikan dengan model embedding yang digunakan.)&lt;br /&gt;
   &lt;br /&gt;
   - Indeks dokumen beserta embedding-nya ke OpenSearch.&lt;br /&gt;
&lt;br /&gt;
     POST my-index/_doc&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;text&amp;quot;: &amp;quot;Teks dokumen 1&amp;quot;,&lt;br /&gt;
       &amp;quot;embedding&amp;quot;: [0.123, 0.234, ...] // embedding vektor hasil encode&lt;br /&gt;
     }&lt;br /&gt;
     ```&lt;br /&gt;
&lt;br /&gt;
4. &amp;#039;&amp;#039;&amp;#039;Alur Query (RAG):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   - User mengirim pertanyaan (query).  &lt;br /&gt;
   - Sistem mengambil pertanyaan user, me-generate embedding query dengan model embedding yang sama.&lt;br /&gt;
   - Lakukan pencarian di OpenSearch dengan `knn` search:&lt;br /&gt;
&lt;br /&gt;
     POST my-index/_search&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;size&amp;quot;: 3,&lt;br /&gt;
       &amp;quot;query&amp;quot;: {&lt;br /&gt;
         &amp;quot;knn&amp;quot;: {&lt;br /&gt;
           &amp;quot;embedding&amp;quot;: {&lt;br /&gt;
             &amp;quot;vector&amp;quot;: [0.321, 0.456, ...], // embedding query&lt;br /&gt;
             &amp;quot;k&amp;quot;: 3&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     ```&lt;br /&gt;
   - Dapatkan dokumen teratas yang paling relevan.&lt;br /&gt;
   - Buat prompt baru untuk LLM dengan format:  &lt;br /&gt;
&lt;br /&gt;
     Context:&lt;br /&gt;
     [Dokumen 1]&lt;br /&gt;
     [Dokumen 2]&lt;br /&gt;
     [Dokumen 3]&lt;br /&gt;
&lt;br /&gt;
     Pertanyaan: {pertanyaan user}&lt;br /&gt;
     Jawaban:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
   - Kirim prompt tersebut ke endpoint model Hugging Face di SageMaker:&lt;br /&gt;
&lt;br /&gt;
     response = predictor.predict({&amp;quot;inputs&amp;quot;: prompt})&lt;br /&gt;
     print(response)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. &amp;#039;&amp;#039;&amp;#039;Orkestrasi Alur:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   - Untuk menyederhanakan pipeline, Anda bisa membungkus semua alur (embedding query, searching di OpenSearch, membangun prompt, memanggil LLM) dalam satu Lambda function.&lt;br /&gt;
   - Gunakan AWS API Gateway untuk menyediakan endpoint publik.  &lt;br /&gt;
   &lt;br /&gt;
   Alurnya menjadi:&lt;br /&gt;
   1. User mengirim query ke endpoint API Gateway.&lt;br /&gt;
   2. API Gateway memanggil Lambda.&lt;br /&gt;
   3. Lambda:&lt;br /&gt;
      - Menghitung embedding query.&lt;br /&gt;
      - Melakukan knn search ke OpenSearch.&lt;br /&gt;
      - Menggabungkan hasil dan membentuk prompt.&lt;br /&gt;
      - Memanggil endpoint SageMaker untuk inference LLM.&lt;br /&gt;
      - Mengembalikan jawaban ke user.&lt;br /&gt;
&lt;br /&gt;
==Tips:==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Optimasi Biaya &amp;amp; Performa:&amp;#039;&amp;#039;&amp;#039; Pertimbangkan untuk menggunakan instance GPU yang sesuai ukuran beban. Untuk beban rendah, Anda dapat memanfaatkan endpoint serverless di SageMaker (jika tersedia untuk model Hugging Face tertentu) atau scaling policy auto-scaling.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Keamanan &amp;amp; IAM:&amp;#039;&amp;#039;&amp;#039; Pastikan peran IAM (misalnya peran SageMaker, peran Lambda) memiliki hak akses untuk membaca S3, query OpenSearch, dan memanggil endpoint inference.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Penyesuaian Prompt:&amp;#039;&amp;#039;&amp;#039; Kualitas jawaban sangat tergantung dari cara Anda menyusun prompt dengan konteks hasil retrieval. Eksperimen dengan panjang konteks, jumlah dokumen, serta format prompt.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Monitoring &amp;amp; Logging:&amp;#039;&amp;#039;&amp;#039; Gunakan CloudWatch untuk memonitor kinerja inference endpoint, Lambda, dan OpenSearch queries. Log detail query &amp;amp; response untuk memudahkan debugging.&lt;br /&gt;
&lt;br /&gt;
Dengan langkah-langkah di atas, Anda akan memiliki pipeline RAG sederhana: dokumen disimpan, diencode menjadi embedding, diindeks, dan pada saat query masuk, sistem akan melakukan retrieval sebelum mengumpankan konteks ke LLM yang dijalankan di AWS.&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>