Mengintegrasikan Semua Komponen RAG
Himpunkan pemuat dokumen, pembenaman, stor vektor dan LLM menjadi aplikasi RAG LangChain yang padu.
Mengintegrasikan Semua Komponen RAG ialah pelajaran LangChain / RAG / Pangkalan Data Vektor percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran LangChain / RAG / Pangkalan Data Vektor, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus LangChain / RAG / Pangkalan Data Vektor merangkumi sejumlah 4 pelajaran.
Selamat Datang ke Integrasi RAG
Selamat datang ke pelajaran tentang penyepaduan semua komponen sistem Penjanaan Diperkaya Pengambilan (RAG) menggunakan LangChain!
Setakat ini, anda telah mempelajari bahagian-bahagian individu: pemuat dokumen, pemisah teks, model pembenaman, gedung vektor, LLM dan gesaan. Kini, tiba masanya untuk menggabungkan semuanya.
Aliran Saluran Paip RAG
Aplikasi RAG mengikut saluran paip yang jelas untuk menjawab soalan menggunakan pengetahuan luaran. Secara umumnya, langkahnya adalah seperti berikut:
- Muatkan: Masukkan data daripada pelbagai sumber.
- Pisahkan: Pecahkan dokumen kepada bahagian yang mudah diurus.
- Benamkan: Tukarkan bahagian teks kepada vektor berangka.
- Simpan: Simpan vektor ini dalam pangkalan data yang boleh dicari.
- Ambil: Cari bahagian yang berkaitan berdasarkan pertanyaan pengguna.
- Jana: Gunakan LLM untuk menjawab pertanyaan dengan merujuk konteks yang diambil.
Import LangChain Penting
Untuk membina aplikasi RAG kita, kita memerlukan beberapa kelas utama daripada LangChain. Kelas-kelas ini membantu kita mengurus dokumen, mencipta pembenaman, berinteraksi dengan gedung vektor dan menyambung kepada LLM.
Kita akan menggunakan komponen seperti Chroma untuk gedung vektor, OllamaEmbeddings dan ChatOllama untuk model setempat, serta alat teras Bahasa Ungkapan LangChain (LCEL).
Menyediakan Dokumen untuk RAG
Langkah pertama dalam mana-mana sistem RAG ialah menyediakan pangkalan pengetahuan anda. Proses ini melibatkan pemuatan data dan kemudian pemisahannya kepada bahagian yang lebih kecil dan mudah diurus.
- Memuatkan: Mendapatkan kandungan daripada fail, pangkalan data atau halaman web.
- Memisahkan: Memecahkan teks besar kepada bahagian yang lebih kecil dan koheren dari segi semantik supaya muat dalam tetingkap konteks LLM serta meningkatkan ketepatan pengambilan.
Untuk contoh yang boleh dijalankan, kita akan menggunakan objek Document dalam memori bagi penyediaan pantas.
Penyediaan Pembenaman & Gedung Vektor
Setelah dokumen dipisahkan, dokumen tersebut perlu ditukarkan kepada perwakilan berangka yang dipanggil pembenaman. Pembenaman ini menangkap makna semantik teks.
Pembenaman itu kemudiannya disimpan dalam gedung vektor seperti Chroma, yang dikhususkan untuk carian persamaan yang cekap. Ini membolehkan kita mencari bahagian dokumen yang berkaitan dengan pertanyaan pengguna dengan cepat.
Menyediakan LLM & Pengambil
Langkah penting seterusnya ialah menyediakan Model Bahasa Besar (LLM) kita dan menyediakan pengambil:
- LLM: Kita akan memulakan LLM seperti
ChatOllamayang akan menerima konteks yang diambil dan soalan pengguna untuk menjana jawapan. - Pengambil: Gedung vektor kita ditukarkan menjadi
retriever. Komponen ini bertugas menerima pertanyaan pengguna, membenamkannya, mencari dalam gedung vektor dan mengembalikan bahagian dokumen yang paling berkaitan.
Membina Templat Gesaan
Templat gesaan yang direka bentuk dengan baik penting untuk membimbing LLM menjana jawapan yang tepat dan berkaitan. Templat ini memberikan arahan kepada LLM tentang cara menggunakan konteks yang diberikan.
Templat kita akan mentakrifkan ruang letak dengan jelas untuk context (dokumen yang diambil) dan question pengguna, bagi memastikan LLM menumpukan perhatian pada maklumat yang diberikan.
Bahasa Ungkapan LangChain
Bahasa Ungkapan LangChain (LCEL) ialah cara yang berkuasa untuk mengarang rangkaian kompleks daripada komponen mudah. Bahasa ini menggunakan operator | untuk merangkaikan komponen yang boleh dijalankan.
RunnableParallel: Membolehkan berbilang cabang berjalan serentak, berguna untuk mendapatkan konteks dan meneruskan soalan.RunnablePassthrough: Meneruskan inputnya, biasanya digunakan untuk memastikan soalan asal tersedia dalam cabang selari.
LCEL menjadikan saluran paip RAG kita fleksibel dan bermodul.
Menyusun Rangkaian RAG
Sekarang, mari kita gabungkan semuanya. Secara konsepnya, rangkaian RAG mengalir seperti berikut:
- Soalan pengguna memasuki rangkaian.
RunnableParallelmenghantar soalan ke dua tempat: kepada pengambil untuk mendapatkan konteks dan turut meneruskan soalan asal secara langsung.- Konteks yang diambil dan soalan asal kemudiannya dimasukkan ke dalam templat gesaan.
- Gesaan yang telah diisi dihantar kepada LLM untuk penjanaan.
- Akhir sekali,
StrOutputParsermengekstrak jawapan teks biasa daripada respons LLM.
Contoh Aplikasi RAG Lengkap
Cuba jalankan aplikasi RAG LangChain yang lengkap ini. Pastikan Ollama telah dipasang dan model seperti nomic-embed-text serta llama2 telah dimuat turun, contohnya ollama pull nomic-embed-text.
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.chat_models import ChatOllama
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough, RunnableParallel
from langchain_core.output_parsers import StrOutputParser
from langchain_core.documents import Document
# 1. Prepare Documents (simple in-memory for runnable example)
documents = [
Document(page_content="LangChain is a framework for developing applications powered by large language models."),
Document(page_content="It simplifies the process of building complex LLM workflows."),
Document(page_content="Retrieval Augmented Generation (RAG) combines LLMs with external data retrieval."),
Document(page_content="Ollama allows running open-source LLMs locally.")
]
# 2. Generate Embeddings and Store in Vector DB
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(documents=documents, embedding=embeddings)
retriever = vectorstore.as_retriever()
# 3. Initialize LLM
llm = ChatOllama(model="llama2")
# 4. Define Prompt Template
prompt = ChatPromptTemplate.from_template("""
Answer the question based ONLY on the following context:
{context}
Question: {question}
""")
# 5. Assemble the RAG Chain
rag_chain = (
RunnableParallel({"context": retriever, "question": RunnablePassthrough()})
| prompt
| llm
| StrOutputParser()
)
# 6. Invoke the Chain with a question
question = "What is LangChain?"
print(f"Question: {question}")
response = rag_chain.invoke(question)
print(f"Answer: {response}")
question_2 = "What is RAG?"
print(f"\nQuestion: {question_2}")
response_2 = rag_chain.invoke(question_2)
print(f"Answer: {response_2}")Semakan Komponen Saluran Paip RAG
Antara komponen berikut, yang manakah biasanya menjadi sebahagian daripada saluran paip RAG LangChain untuk menjawab soalan pengguna?
Imbas Kembali Integrasi RAG
Syabas! Anda telah berjaya mempelajari cara menyepadukan semua komponen teras ke dalam aplikasi RAG LangChain yang padu.
- Kami menelusuri keseluruhan saluran paip RAG, daripada memuatkan dokumen hingga menjana jawapan.
- Anda melihat bagaimana komponen modular LangChain dan LCEL membolehkan pembinaan rangkaian yang fleksibel dan berkuasa.
- Kini anda mempunyai contoh yang boleh dijalankan untuk menunjukkan sistem RAG yang lengkap.
Seterusnya, kita akan meneroka cara menyoal sistem RAG anda dengan berkesan dan menjana jawapan berkualiti tinggi.
Pelajari LangChain / RAG / Pangkalan Data Vektor dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Mengintegrasikan Semua Komponen RAG” percuma?
Ya — teks penuh “Mengintegrasikan Semua Komponen RAG” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus LangChain / RAG / Pangkalan Data Vektor, tingkat taraf kepada CoddyKit PRO. Kursus LangChain / RAG / Pangkalan Data Vektor merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengintegrasikan Semua Komponen RAG”?
Himpunkan pemuat dokumen, pembenaman, stor vektor dan LLM menjadi aplikasi RAG LangChain yang padu. Anda berlatih LangChain / RAG / Pangkalan Data Vektor menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan LangChain / RAG / Pangkalan Data Vektor?
Tiada pengalaman terdahulu diperlukan. Pembelajaran LangChain / RAG / Pangkalan Data Vektor di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Mengintegrasikan Semua Komponen RAG” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran LangChain / RAG / Pangkalan Data Vektor ini?
Ya. Setiap pelajaran LangChain / RAG / Pangkalan Data Vektor menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengintegrasikan Semua Komponen RAG
- Membuat Pertanyaan dan Menjana Jawapan
- Menilai Prestasi Sistem RAG
- Membina Set Ujian Emas untuk RAG