<?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=LLM%3A_RAG_coba</id>
	<title>LLM: RAG coba - 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=LLM%3A_RAG_coba"/>
	<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=LLM:_RAG_coba&amp;action=history"/>
	<updated>2026-04-20T19:35:03Z</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=LLM:_RAG_coba&amp;diff=72029&amp;oldid=prev</id>
		<title>Unknown user: Created page with &quot;Untuk mengimplementasikan Retrieval-Augmented Generation (RAG) yang dapat menerima dokumen dalam format PDF, DOC, dan teks melalui antarmuka web di Ubuntu 24.04 menggunakan Ol...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=LLM:_RAG_coba&amp;diff=72029&amp;oldid=prev"/>
		<updated>2025-03-18T07:56:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Untuk mengimplementasikan Retrieval-Augmented Generation (RAG) yang dapat menerima dokumen dalam format PDF, DOC, dan teks melalui antarmuka web di Ubuntu 24.04 menggunakan Ol...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Untuk mengimplementasikan Retrieval-Augmented Generation (RAG) yang dapat menerima dokumen dalam format PDF, DOC, dan teks melalui antarmuka web di Ubuntu 24.04 menggunakan Ollama, Anda dapat mengikuti langkah-langkah berikut:&lt;br /&gt;
&lt;br /&gt;
1. &amp;#039;&amp;#039;&amp;#039;Instalasi Ollama di Ubuntu 24.04:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Ollama adalah platform yang mempermudah penggunaan model bahasa besar (LLM) secara lokal. Untuk menginstalnya di Ubuntu 24.04, jalankan perintah berikut:&lt;br /&gt;
&lt;br /&gt;
 sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama&lt;br /&gt;
 sudo chmod +x /usr/bin/ollama&lt;br /&gt;
&lt;br /&gt;
Setelah itu, tambahkan Ollama sebagai layanan yang berjalan saat startup:&lt;br /&gt;
&lt;br /&gt;
 sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama&lt;br /&gt;
 sudo tee /etc/systemd/system/ollama.service &amp;gt; /dev/null &amp;lt;&amp;lt;EOF&lt;br /&gt;
 &lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Ollama Service&lt;br /&gt;
 After=network-online.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/usr/bin/ollama serve&lt;br /&gt;
 User=ollama&lt;br /&gt;
 Group=ollama&lt;br /&gt;
 Restart=always&lt;br /&gt;
 RestartSec=3&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=default.target&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable ollama&lt;br /&gt;
 sudo systemctl start ollama&lt;br /&gt;
&lt;br /&gt;
Langkah-langkah ini akan memastikan Ollama berjalan sebagai layanan di sistem Anda.&lt;br /&gt;
&lt;br /&gt;
2. &amp;#039;&amp;#039;&amp;#039;Instalasi Dependensi Python:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Untuk memproses dokumen dan mengimplementasikan RAG, Anda memerlukan beberapa pustaka Python. Buat lingkungan virtual dan instal pustaka yang diperlukan:&lt;br /&gt;
&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install langchain langchain-community pypdf docarray flask werkzeug&lt;br /&gt;
&lt;br /&gt;
Pustaka-pustaka ini akan membantu dalam memuat dokumen, membuat representasi vektor, dan membangun antarmuka web.&lt;br /&gt;
&lt;br /&gt;
3. &amp;#039;&amp;#039;&amp;#039;Menyiapkan Model Ollama dan Embeddings:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Unduh model LLM dan model embeddings yang diperlukan menggunakan Ollama:&lt;br /&gt;
&lt;br /&gt;
 ollama pull llama3&lt;br /&gt;
 ollama pull znbang/bge:small-en-v1.5-f32&lt;br /&gt;
&lt;br /&gt;
Model &amp;quot;llama3&amp;quot; akan digunakan untuk pemrosesan bahasa, sedangkan &amp;quot;znbang/bge:small-en-v1.5-f32&amp;quot; akan digunakan untuk membuat embeddings.&lt;br /&gt;
&lt;br /&gt;
4. &amp;#039;&amp;#039;&amp;#039;Membangun Aplikasi Web dengan Flask:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Berikut adalah contoh kode Python yang menggunakan Flask untuk membuat antarmuka web yang menerima unggahan dokumen dan memungkinkan interaksi berbasis RAG:&lt;br /&gt;
&lt;br /&gt;
 from flask import Flask, request, render_template&lt;br /&gt;
 from werkzeug.utils import secure_filename&lt;br /&gt;
 from langchain_community.llms import Ollama&lt;br /&gt;
 from langchain_community.document_loaders import PyPDFLoader, Docx2txtLoader, TextLoader&lt;br /&gt;
 from langchain.prompts import PromptTemplate&lt;br /&gt;
 from langchain_community.vectorstores import DocArrayInMemorySearch&lt;br /&gt;
 from langchain_community.embeddings import OllamaEmbeddings&lt;br /&gt;
 from langchain_core.output_parsers import StrOutputParser&lt;br /&gt;
 from langchain_core.runnables import RunnablePassthrough&lt;br /&gt;
 import os&lt;br /&gt;
 &lt;br /&gt;
 app = Flask(__name__)&lt;br /&gt;
 app.config[&amp;#039;UPLOAD_FOLDER&amp;#039;] = &amp;#039;uploads&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 llm = Ollama(model=&amp;#039;llama3&amp;#039;)&lt;br /&gt;
 embeddings = OllamaEmbeddings(model=&amp;#039;znbang/bge:small-en-v1.5-f32&amp;#039;)&lt;br /&gt;
 store = DocArrayInMemorySearch(embedding=embeddings)&lt;br /&gt;
 &lt;br /&gt;
 def load_document(filepath):&lt;br /&gt;
     if filepath.endswith(&amp;#039;.pdf&amp;#039;):&lt;br /&gt;
         loader = PyPDFLoader(filepath)&lt;br /&gt;
     elif filepath.endswith(&amp;#039;.docx&amp;#039;):&lt;br /&gt;
         loader = Docx2txtLoader(filepath)&lt;br /&gt;
     elif filepath.endswith(&amp;#039;.txt&amp;#039;):&lt;br /&gt;
         loader = TextLoader(filepath)&lt;br /&gt;
     else:&lt;br /&gt;
         raise ValueError(&amp;#039;Unsupported file format&amp;#039;)&lt;br /&gt;
     return loader.load_and_split()&lt;br /&gt;
&lt;br /&gt;
 @app.route(&amp;#039;/&amp;#039;, methods=[&amp;#039;GET&amp;#039;, &amp;#039;POST&amp;#039;])&lt;br /&gt;
 def index():&lt;br /&gt;
     if request.method == &amp;#039;POST&amp;#039;:&lt;br /&gt;
         file = request.files[&amp;#039;document&amp;#039;]&lt;br /&gt;
         if file:&lt;br /&gt;
             filename = secure_filename(file.filename)&lt;br /&gt;
             filepath = os.path.join(app.config[&amp;#039;UPLOAD_FOLDER&amp;#039;], filename)&lt;br /&gt;
             file.save(filepath)&lt;br /&gt;
             documents = load_document(filepath)&lt;br /&gt;
             store.add_documents(documents)&lt;br /&gt;
     return render_template(&amp;#039;index.html&amp;#039;)&lt;br /&gt;
      &lt;br /&gt;
 @app.route(&amp;#039;/ask&amp;#039;, methods=[&amp;#039;POST&amp;#039;])&lt;br /&gt;
 def ask():&lt;br /&gt;
     question = request.form[&amp;#039;question&amp;#039;]&lt;br /&gt;
     retriever = store.as_retriever()&lt;br /&gt;
     template = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     Answer the question based only on the context provided.&lt;br /&gt;
 &lt;br /&gt;
     Context: {context}&lt;br /&gt;
 &lt;br /&gt;
     Question: {question}&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     prompt = PromptTemplate.from_template(template)&lt;br /&gt;
     def format_docs(docs):&lt;br /&gt;
         return &amp;quot;\n\n&amp;quot;.join(doc.page_content for doc in docs)&lt;br /&gt;
     chain = (&lt;br /&gt;
         {&lt;br /&gt;
             &amp;#039;context&amp;#039;: retriever.get_relevant_documents(question) | format_docs,&lt;br /&gt;
             &amp;#039;question&amp;#039;: RunnablePassthrough(),&lt;br /&gt;
         }&lt;br /&gt;
         | prompt&lt;br /&gt;
         | llm&lt;br /&gt;
         | StrOutputParser()&lt;br /&gt;
     )&lt;br /&gt;
     answer = chain.invoke({&amp;#039;question&amp;#039;: question})&lt;br /&gt;
     return render_template(&amp;#039;index.html&amp;#039;, question=question, answer=answer)&lt;br /&gt;
 &lt;br /&gt;
 if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
     os.makedirs(app.config[&amp;#039;UPLOAD_FOLDER&amp;#039;], exist_ok=True)&lt;br /&gt;
     app.run(debug=True)&lt;br /&gt;
&lt;br /&gt;
Kode ini membuat aplikasi web sederhana yang memungkinkan pengguna mengunggah dokumen dan mengajukan pertanyaan berdasarkan konten dokumen tersebut. Dokumen yang diunggah disimpan dalam folder &amp;#039;uploads&amp;#039;, dan kontennya diindeks untuk pengambilan informasi yang relevan.&lt;br /&gt;
&lt;br /&gt;
5. &amp;#039;&amp;#039;&amp;#039;Membuat Template HTML:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Buat file `templates/index.html` untuk antarmuka pengguna:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!doctype html&amp;gt;&lt;br /&gt;
 &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;head&amp;gt;&lt;br /&gt;
     &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1, shrink-to-fit=no&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;title&amp;gt;Document RAG Interface&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;/head&amp;gt;&lt;br /&gt;
   &amp;lt;body&amp;gt;&lt;br /&gt;
     &amp;lt;h1&amp;gt;Upload Document&amp;lt;/h1&amp;gt;&lt;br /&gt;
     &amp;lt;form method=&amp;quot;post&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;document&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Upload&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;/form&amp;gt;&lt;br /&gt;
     &amp;lt;h1&amp;gt;Ask a Question&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Pranala Menarik==&lt;br /&gt;
&lt;br /&gt;
* [[TensorFlow]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>