Kecerdasan Data Generatif

Pola RAG tingkat lanjut di Amazon SageMaker | Layanan Web Amazon

Tanggal:

Saat ini, pelanggan dari semua industri—baik itu jasa keuangan, layanan kesehatan dan ilmu hayati, perjalanan dan perhotelan, media dan hiburan, telekomunikasi, perangkat lunak sebagai layanan (SaaS), dan bahkan penyedia model kepemilikan—menggunakan model bahasa besar (LLM) untuk membangun aplikasi seperti chatbot tanya jawab (QnA), mesin pencari, dan basis pengetahuan. Ini AI generatif aplikasi tidak hanya digunakan untuk mengotomatisasi proses bisnis yang ada, tetapi juga memiliki kemampuan untuk mentransformasikan pengalaman pelanggan menggunakan aplikasi tersebut. Dengan kemajuan yang dibuat dengan LLM seperti Instruksi Mixtral-8x7B, turunan dari arsitektur seperti campuran ahli (MoE), pelanggan terus mencari cara untuk meningkatkan kinerja dan akurasi aplikasi AI generatif sekaligus memungkinkan mereka menggunakan lebih banyak model sumber tertutup dan terbuka secara efektif.

Sejumlah teknik biasanya digunakan untuk meningkatkan akurasi dan kinerja keluaran LLM, seperti penyesuaian dengan penyetelan efisien parameter (PEFT), pembelajaran penguatan dari umpan balik manusia (RLHF), dan tampil distilasi pengetahuan. Namun, saat membangun aplikasi AI generatif, Anda dapat menggunakan solusi alternatif yang memungkinkan penggabungan pengetahuan eksternal secara dinamis dan memungkinkan Anda mengontrol informasi yang digunakan untuk pembuatannya tanpa perlu menyempurnakan model dasar yang sudah ada. Di sinilah Retrieval Augmented Generation (RAG) berperan, khususnya untuk aplikasi AI generatif dibandingkan dengan alternatif penyesuaian yang lebih mahal dan kuat yang telah kita diskusikan. Jika Anda menerapkan aplikasi RAG yang kompleks ke dalam tugas sehari-hari, Anda mungkin menghadapi tantangan umum dengan sistem RAG Anda seperti pengambilan yang tidak akurat, peningkatan ukuran dan kompleksitas dokumen, dan konteks yang berlebihan, yang dapat berdampak signifikan pada kualitas dan keandalan jawaban yang dihasilkan. .

Posting ini membahas pola RAG untuk meningkatkan akurasi respons menggunakan LangChain dan alat seperti pengambilan dokumen induk serta teknik seperti kompresi kontekstual untuk memungkinkan pengembang meningkatkan aplikasi AI generatif yang ada.

Ikhtisar solusi

Dalam postingan ini, kami mendemonstrasikan penggunaan pembuatan teks Instruksi Mixtral-8x7B yang dikombinasikan dengan model penyematan BGE Large En untuk membangun sistem RAG QnA secara efisien pada notebook Amazon SageMaker menggunakan alat pengambilan dokumen induk dan teknik kompresi kontekstual. Diagram berikut menggambarkan arsitektur solusi ini.

Anda dapat menerapkan solusi ini hanya dengan beberapa klik menggunakan Mulai Lompatan Amazon SageMaker, platform yang dikelola sepenuhnya yang menawarkan model dasar canggih untuk berbagai kasus penggunaan seperti penulisan konten, pembuatan kode, menjawab pertanyaan, copywriting, ringkasan, klasifikasi, dan pengambilan informasi. Ini menyediakan kumpulan model terlatih yang dapat Anda terapkan dengan cepat dan mudah, sehingga mempercepat pengembangan dan penerapan aplikasi pembelajaran mesin (ML). Salah satu komponen utama SageMaker JumpStart adalah Model Hub, yang menawarkan katalog lengkap model terlatih, seperti Mixtral-8x7B, untuk berbagai tugas.

Mixtral-8x7B menggunakan arsitektur MoE. Arsitektur ini memungkinkan berbagai bagian jaringan saraf untuk berspesialisasi dalam tugas yang berbeda, sehingga secara efektif membagi beban kerja di antara banyak pakar. Pendekatan ini memungkinkan pelatihan yang efisien dan penerapan model yang lebih besar dibandingkan dengan arsitektur tradisional.

Salah satu keunggulan utama arsitektur MoE adalah skalabilitasnya. Dengan mendistribusikan beban kerja ke beberapa pakar, model KLH dapat dilatih pada kumpulan data yang lebih besar dan mencapai kinerja yang lebih baik dibandingkan model tradisional dengan ukuran yang sama. Selain itu, model MoE bisa lebih efisien selama inferensi karena hanya sekelompok pakar yang perlu diaktifkan untuk mendapatkan masukan tertentu.

Untuk informasi lebih lanjut tentang Instruksi Mixtral-8x7B di AWS, lihat Mixtral-8x7B kini tersedia di Amazon SageMaker JumpStart. Model Mixtral-8x7B tersedia di bawah lisensi Apache 2.0 yang permisif, untuk digunakan tanpa batasan.

Dalam posting ini, kami membahas bagaimana Anda dapat menggunakannya LangChain untuk menciptakan aplikasi RAG yang efektif dan efisien. LangChain adalah pustaka Python sumber terbuka yang dirancang untuk membangun aplikasi dengan LLM. Ini memberikan kerangka kerja modular dan fleksibel untuk menggabungkan LLM dengan komponen lain, seperti basis pengetahuan, sistem pengambilan, dan alat AI lainnya, untuk menciptakan aplikasi yang kuat dan dapat disesuaikan.

Kami memandu pembuatan pipeline RAG di SageMaker dengan Mixtral-8x7B. Kami menggunakan model pembuatan teks Instruksi Mixtral-8x7B dengan model penyematan BGE Large En untuk membuat sistem QnA yang efisien menggunakan RAG pada notebook SageMaker. Kami menggunakan instans ml.t3.medium untuk mendemonstrasikan penerapan LLM melalui SageMaker JumpStart, yang dapat diakses melalui titik akhir API yang dihasilkan SageMaker. Pengaturan ini memungkinkan eksplorasi, eksperimen, dan optimalisasi teknik RAG tingkat lanjut dengan LangChain. Kami juga mengilustrasikan integrasi penyimpanan FAISS Embedding ke dalam alur kerja RAG, menyoroti perannya dalam menyimpan dan mengambil embeddings untuk meningkatkan kinerja sistem.

Kami melakukan panduan singkat tentang notebook SageMaker. Untuk petunjuk lebih rinci dan langkah demi langkah, lihat Pola RAG Tingkat Lanjut dengan Mixtral di repo SageMaker Jumpstart GitHub.

Perlunya pola RAG tingkat lanjut

Pola RAG tingkat lanjut sangat penting untuk meningkatkan kemampuan LLM saat ini dalam memproses, memahami, dan menghasilkan teks mirip manusia. Seiring bertambahnya ukuran dan kompleksitas dokumen, merepresentasikan beberapa aspek dokumen dalam satu penyematan dapat menyebabkan hilangnya kekhususan. Meskipun penting untuk menangkap esensi umum dari sebuah dokumen, mengenali dan mewakili beragam subkonteks di dalamnya juga sama pentingnya. Ini adalah tantangan yang sering Anda hadapi saat bekerja dengan dokumen berukuran besar. Tantangan lain dengan RAG adalah dengan pengambilan, Anda tidak mengetahui pertanyaan spesifik yang akan ditangani oleh sistem penyimpanan dokumen Anda saat penyerapan. Hal ini dapat mengakibatkan informasi yang paling relevan dengan kueri terkubur di bawah teks (limpahan konteks). Untuk mengurangi kegagalan dan meningkatkan arsitektur RAG yang ada, Anda dapat menggunakan pola RAG tingkat lanjut (pengambil dokumen induk dan kompresi kontekstual) untuk mengurangi kesalahan pengambilan, meningkatkan kualitas jawaban, dan memungkinkan penanganan pertanyaan yang kompleks.

Dengan teknik yang dibahas dalam postingan ini, Anda dapat mengatasi tantangan utama yang terkait dengan pengambilan dan integrasi pengetahuan eksternal, sehingga memungkinkan aplikasi Anda memberikan respons yang lebih tepat dan sadar konteks.

Di bagian berikut, kita menjelajahi caranya pengambilan dokumen induk dan kompresi kontekstual dapat membantu Anda mengatasi beberapa masalah yang telah kita bahas.

Pengambil dokumen induk

Pada bagian sebelumnya, kami menyoroti tantangan yang dihadapi aplikasi RAG ketika menangani dokumen yang luas. Untuk mengatasi tantangan-tantangan ini, pengambilan dokumen induk mengkategorikan dan menetapkan dokumen masuk sebagai dokumen orang tua. Dokumen-dokumen ini diakui karena sifatnya yang komprehensif namun tidak langsung digunakan dalam bentuk aslinya untuk penyematan. Daripada mengompresi seluruh dokumen menjadi satu penyematan, pengambil dokumen induk membedah dokumen induk tersebut menjadi satu dokumen anak. Setiap dokumen anak menangkap aspek atau topik berbeda dari dokumen induk yang lebih luas. Setelah identifikasi segmen anak ini, masing-masing embeddings ditetapkan, menangkap esensi tematik spesifiknya (lihat diagram berikut). Selama pengambilan, dokumen induk dipanggil. Teknik ini memberikan kemampuan pencarian yang bertarget namun luas, memberikan LLM perspektif yang lebih luas. Pengambil dokumen induk memberi LLM keuntungan ganda: kekhususan penyematan dokumen anak untuk pengambilan informasi yang tepat dan relevan, ditambah dengan pemanggilan dokumen induk untuk menghasilkan respons, yang memperkaya keluaran LLM dengan konteks yang berlapis dan menyeluruh.

Kompresi kontekstual

Untuk mengatasi masalah konteks overflow yang dibahas sebelumnya, Anda dapat menggunakan kompresi kontekstual untuk mengompresi dan memfilter dokumen yang diambil sesuai dengan konteks kueri, sehingga hanya informasi terkait yang disimpan dan diproses. Hal ini dicapai melalui kombinasi base retriever untuk pengambilan dokumen awal dan kompresor dokumen untuk menyempurnakan dokumen-dokumen ini dengan mengurangi kontennya atau mengecualikan seluruhnya berdasarkan relevansi, seperti yang diilustrasikan dalam diagram berikut. Pendekatan yang disederhanakan ini, difasilitasi oleh pengambilan kompresi kontekstual, sangat meningkatkan efisiensi aplikasi RAG dengan menyediakan metode untuk mengekstrak dan memanfaatkan hanya apa yang penting dari sejumlah besar informasi. Hal ini mengatasi masalah kelebihan informasi dan pemrosesan data yang tidak relevan secara langsung, sehingga menghasilkan kualitas respons yang lebih baik, operasi LLM yang lebih hemat biaya, dan proses pengambilan keseluruhan yang lebih lancar. Pada dasarnya, ini adalah filter yang menyesuaikan informasi dengan kueri yang ada, menjadikannya alat yang sangat dibutuhkan bagi pengembang yang ingin mengoptimalkan aplikasi RAG mereka untuk kinerja dan kepuasan pengguna yang lebih baik.

Prasyarat

Jika Anda baru mengenal SageMaker, lihat Panduan Pengembangan Amazon SageMaker.

Sebelum Anda memulai solusinya, buat akun AWS. Saat Anda membuat akun AWS, Anda mendapatkan identitas sistem masuk tunggal (SSO) yang memiliki akses penuh ke semua layanan dan sumber daya AWS di akun tersebut. Identitas ini disebut akun AWS pengguna root.

Masuk ke Konsol Manajemen AWS menggunakan alamat email dan kata sandi yang Anda gunakan untuk membuat akun memberi Anda akses penuh ke semua sumber daya AWS di akun Anda. Kami sangat menyarankan agar Anda tidak menggunakan pengguna root untuk tugas sehari-hari, bahkan tugas administratif.

Sebaliknya, patuhi praktik terbaik keamanan in Identitas AWS dan Manajemen Akses (IAM), dan membuat pengguna dan grup administratif. Kemudian kunci kredensial pengguna root dengan aman dan gunakan hanya untuk melakukan beberapa tugas manajemen akun dan layanan.

Model Mixtral-8x7b memerlukan instans ml.g5.48xlarge. SageMaker JumpStart menyediakan cara yang disederhanakan untuk mengakses dan menerapkan lebih dari 100 model fondasi sumber terbuka dan pihak ketiga yang berbeda. Untuk meluncurkan titik akhir untuk menghosting Mixtral-8x7B dari SageMaker JumpStart, Anda mungkin perlu meminta peningkatan kuota layanan untuk mengakses instans ml.g5.48xlarge untuk penggunaan titik akhir. Kamu bisa kuota layanan permintaan meningkat melalui konsol, Antarmuka Baris Perintah AWS (AWS CLI), atau API untuk mengizinkan akses ke sumber daya tambahan tersebut.

Siapkan instans notebook SageMaker dan instal dependensi

Untuk memulai, buat instans notebook SageMaker dan instal dependensi yang diperlukan. Mengacu kepada GitHub repo untuk memastikan pengaturan berhasil. Setelah Anda menyiapkan instans notebook, Anda dapat menyebarkan modelnya.

Anda juga dapat menjalankan notebook secara lokal di lingkungan pengembangan terintegrasi (IDE) pilihan Anda. Pastikan Anda telah menginstal lab notebook Jupyter.

Menyebarkan model

Terapkan model Mixtral-8X7B Instruct LLM di SageMaker JumpStart:

# Import the JumpStartModel class from the SageMaker JumpStart library
from sagemaker.jumpstart.model import JumpStartModel

# Specify the model ID for the HuggingFace Mixtral 8x7b Instruct LLM model
model_id = "huggingface-llm-mixtral-8x7b-instruct"
model = JumpStartModel(model_id=model_id)
llm_predictor = model.deploy()

Terapkan model penyematan BGE Large En di SageMaker JumpStart:

# Specify the model ID for the HuggingFace BGE Large EN Embedding model
model_id = "huggingface-sentencesimilarity-bge-large-en"
text_embedding_model = JumpStartModel(model_id=model_id)
embedding_predictor = text_embedding_model.deploy()

Siapkan LangChain

Setelah mengimpor semua pustaka yang diperlukan dan menerapkan model Mixtral-8x7B dan model penyematan BGE Large En, kini Anda dapat menyiapkan LangChain. Untuk petunjuk langkah demi langkah, lihat GitHub repo.

Persiapan data

Dalam posting ini, kami menggunakan Surat kepada Pemegang Saham Amazon selama beberapa tahun sebagai korpus teks untuk melakukan QnA. Untuk langkah-langkah lebih rinci dalam menyiapkan data, lihat GitHub repo.

Menjawab pertanyaan

Setelah data disiapkan, Anda dapat menggunakan pembungkus yang disediakan oleh LangChain, yang membungkus penyimpanan vektor dan mengambil masukan untuk LLM. Pembungkus ini melakukan langkah-langkah berikut:

  1. Ambil pertanyaan masukan.
  2. Buat penyematan pertanyaan.
  3. Ambil dokumen yang relevan.
  4. Gabungkan dokumen dan pertanyaan ke dalam prompt.
  5. Panggil model dengan prompt dan hasilkan jawabannya dengan cara yang mudah dibaca.

Sekarang penyimpanan vektor sudah ada, Anda dapat mulai mengajukan pertanyaan:

prompt_template = """<s>[INST]
{query}
[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["query"]
)
query = "How has AWS evolved?"
answer = wrapper_store_faiss.query(question=PROMPT.format(query=query), llm=llm)
print(answer)
AWS, or Amazon Web Services, has evolved significantly since its initial launch in 2006. It started as a feature-poor service, offering only one instance size, in one data center, in one region of the world, with Linux operating system instances only. There was no monitoring, load balancing, auto-scaling, or persistent storage at the time. However, AWS had a successful launch and has since grown into a multi-billion-dollar service.

Over the years, AWS has added numerous features and services, with over 3,300 new ones launched in 2022 alone. They have expanded their offerings to include Windows, monitoring, load balancing, auto-scaling, and persistent storage. AWS has also made significant investments in long-term inventions that have changed what's possible in technology infrastructure.

One example of this is their investment in chip development. AWS has also seen a robust new customer pipeline and active migrations, with many companies opting to move to AWS for the agility, innovation, cost-efficiency, and security benefits it offers. AWS has transformed how customers, from start-ups to multinational companies to public sector organizations, manage their technology infrastructure.

Rantai retriever biasa

Dalam skenario sebelumnya, kami mengeksplorasi cara cepat dan mudah untuk mendapatkan jawaban kontekstual atas pertanyaan Anda. Sekarang mari kita lihat opsi yang lebih dapat disesuaikan dengan bantuan RetrievalQA, di mana Anda dapat menyesuaikan bagaimana dokumen yang diambil harus ditambahkan ke prompt menggunakan parameter chain_type. Selain itu, untuk mengontrol berapa banyak dokumen relevan yang harus diambil, Anda dapat mengubah parameter k pada kode berikut untuk melihat keluaran yang berbeda. Dalam banyak skenario, Anda mungkin ingin mengetahui dokumen sumber mana yang digunakan LLM untuk menghasilkan jawabannya. Anda bisa mendapatkan dokumen-dokumen itu di output menggunakan return_source_documents, yang mengembalikan dokumen yang ditambahkan ke konteks perintah LLM. RetrievalQA juga memungkinkan Anda menyediakan templat perintah khusus yang spesifik untuk model tersebut.

from langchain.chains import RetrievalQA

prompt_template = """<s>[INST]
Use the following pieces of context to provide a concise answer to the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.

{context}

Question: {question}

[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["context", "question"]
)

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore_faiss.as_retriever(
        search_type="similarity", search_kwargs={"k": 3}
    ),
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Mari kita mengajukan pertanyaan:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved from an initially unprofitable investment to an $85B annual revenue run rate business with strong profitability, offering a wide range of services and features, and becoming a significant part of Amazon's portfolio. Despite facing skepticism and short-term headwinds, AWS continued to innovate, attract new customers, and migrate active customers, offering benefits such as agility, innovation, cost-efficiency, and security. AWS also expanded its long-term investments, including chip development, to provide new capabilities and change what's possible for its customers.

Rantai pengambilan dokumen induk

Mari kita lihat opsi RAG yang lebih canggih dengan bantuan ParentDocumentRetriever. Saat bekerja dengan pengambilan dokumen, Anda mungkin mengalami trade-off antara menyimpan potongan kecil dokumen untuk penyematan yang akurat dan dokumen yang lebih besar untuk menjaga lebih banyak konteks. Pengambil dokumen induk mencapai keseimbangan itu dengan memisahkan dan menyimpan sejumlah kecil data.

Kami menggunakan a parent_splitter untuk membagi dokumen asli menjadi bagian yang lebih besar yang disebut dokumen induk dan a child_splitter untuk membuat dokumen anak yang lebih kecil dari dokumen asli:

# This text splitter is used to create the parent documents
parent_splitter = RecursiveCharacterTextSplitter(chunk_size=2000)

# This text splitter is used to create the child documents
# It should create documents smaller than the parent
child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)

# The vectorstore to use to index the child chunks
vectorstore_faiss = FAISS.from_documents(
    child_splitter.split_documents(documents),
    sagemaker_embeddings,
)

Dokumen anak kemudian diindeks di penyimpanan vektor menggunakan embeddings. Hal ini memungkinkan pengambilan dokumen turunan yang relevan secara efisien berdasarkan kesamaan. Untuk mengambil informasi yang relevan, pengambilan dokumen induk terlebih dahulu mengambil dokumen anak dari penyimpanan vektor. Kemudian mencari ID induk untuk dokumen anak tersebut dan mengembalikan dokumen induk yang lebih besar.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Mari kita mengajukan pertanyaan:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) started with a feature-poor initial launch of the Elastic Compute Cloud (EC2) service in 2006, providing only one instance size, in one data center, in one region of the world, with Linux operating system instances only, and without many key features like monitoring, load balancing, auto-scaling, or persistent storage. However, AWS's success allowed them to quickly iterate and add the missing capabilities, eventually expanding to offer various flavors, sizes, and optimizations of compute, storage, and networking, as well as developing their own chips (Graviton) to push price and performance further. AWS's iterative innovation process required significant investments in financial and people resources over 20 years, often well in advance of when it would pay out, to meet customer needs and improve long-term customer experiences, loyalty, and returns for shareholders.

Rantai kompresi kontekstual

Mari kita lihat opsi RAG lanjutan lainnya yang disebut kompresi kontekstual. Salah satu tantangan dalam pengambilan adalah biasanya kami tidak mengetahui kueri spesifik yang akan dihadapi sistem penyimpanan dokumen Anda saat Anda memasukkan data ke dalam sistem. Ini berarti bahwa informasi yang paling relevan dengan kueri mungkin terkubur dalam dokumen dengan banyak teks yang tidak relevan. Melewati dokumen lengkap melalui aplikasi Anda dapat menyebabkan panggilan LLM lebih mahal dan tanggapan yang lebih buruk.

Pengambil kompresi kontekstual mengatasi tantangan dalam mengambil informasi yang relevan dari sistem penyimpanan dokumen, di mana data terkait mungkin terkubur di dalam dokumen yang berisi banyak teks. Dengan mengompresi dan memfilter dokumen yang diambil berdasarkan konteks kueri tertentu, hanya informasi paling relevan yang dikembalikan.

Untuk menggunakan retriever kompresi kontekstual, Anda memerlukan:

  • Seekor anjing retriever dasar – Ini adalah pengambilan awal yang mengambil dokumen dari sistem penyimpanan berdasarkan kueri
  • Kompresor dokumen – Komponen ini mengambil dokumen yang pertama kali diambil dan mempersingkatnya dengan mengurangi konten masing-masing dokumen atau menghapus seluruh dokumen yang tidak relevan, menggunakan konteks kueri untuk menentukan relevansi

Menambahkan kompresi kontekstual dengan ekstraktor rantai LLM

Pertama, bungkus base retriever Anda dengan a ContextualCompressionRetriever. Anda akan menambahkan Ekstraktor LLMChain, yang akan mengulangi dokumen yang dikembalikan pertama kali dan mengekstrak dari masing-masing dokumen hanya konten yang relevan dengan kueri.

from langchain.retrievers import ContextualCompressionRetrieverfrom langchain.retrievers.document_compressors import LLMChainExtractor

text_splitter = RecursiveCharacterTextSplitter(
    # Set a really small chunk size, just to show.
    chunk_size=1000,
    chunk_overlap=100,
)

docs = text_splitter.split_documents(documents)
retriever = FAISS.from_documents(
    docs,
    sagemaker_embeddings,
).as_retriever()

compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)

Inisialisasi rantai menggunakan ContextualCompressionRetriever dengan LLMChainExtractor dan meneruskan prompt melalui chain_type_kwargs argumen.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Mari kita mengajukan pertanyaan:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS evolved by starting as a small project inside Amazon, requiring significant capital investment and facing skepticism from both inside and outside the company. However, AWS had a head start on potential competitors and believed in the value it could bring to customers and Amazon. AWS made a long-term commitment to continue investing, resulting in over 3,300 new features and services launched in 2022. AWS has transformed how customers manage their technology infrastructure and has become an $85B annual revenue run rate business with strong profitability. AWS has also continuously improved its offerings, such as enhancing EC2 with additional features and services after its initial launch.

Filter dokumen dengan filter rantai LLM

Grafik Filter Rantai LLM adalah kompresor yang sedikit lebih sederhana namun lebih kuat yang menggunakan rantai LLM untuk memutuskan dokumen mana yang diambil pertama kali untuk disaring dan mana yang dikembalikan, tanpa memanipulasi konten dokumen:

from langchain.retrievers.document_compressors import LLMChainFilter

_filter = LLMChainFilter.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=_filter, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)
print(compressed_docs)

Inisialisasi rantai menggunakan ContextualCompressionRetriever dengan LLMChainFilter dan meneruskan prompt melalui chain_type_kwargs argumen.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Mari kita mengajukan pertanyaan:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved by initially launching feature-poor but iterating quickly based on customer feedback to add necessary capabilities. This approach allowed AWS to launch EC2 in 2006 with limited features and then continuously add new functionalities, such as additional instance sizes, data centers, regions, operating system options, monitoring tools, load balancing, auto-scaling, and persistent storage. Over time, AWS transformed from a feature-poor service to a multi-billion-dollar business by focusing on customer needs, agility, innovation, cost-efficiency, and security. AWS now has an $85B annual revenue run rate and offers over 3,300 new features and services each year, catering to a wide range of customers from start-ups to multinational companies and public sector organizations.

Bandingkan hasil

Tabel berikut membandingkan hasil dari kueri yang berbeda berdasarkan teknik.

Teknik Pertanyaan 1 Pertanyaan 2 Perbandingan
Bagaimana AWS berkembang? Mengapa Amazon sukses?
Keluaran Rantai Retriever Reguler AWS (Amazon Web Services) berevolusi dari investasi yang awalnya tidak menguntungkan menjadi bisnis dengan tingkat pendapatan tahunan sebesar $85 miliar dengan profitabilitas yang kuat, menawarkan beragam layanan dan fitur, dan menjadi bagian penting dari portofolio Amazon. Meskipun menghadapi skeptisisme dan hambatan jangka pendek, AWS terus berinovasi, menarik pelanggan baru, dan memigrasikan pelanggan aktif, sehingga menawarkan manfaat seperti ketangkasan, inovasi, efisiensi biaya, dan keamanan. AWS juga memperluas investasi jangka panjangnya, termasuk pengembangan chip, untuk memberikan kemampuan baru dan mengubah apa yang mungkin dilakukan pelanggannya. Amazon sukses karena inovasi berkelanjutan dan ekspansi ke bidang-bidang baru seperti layanan infrastruktur teknologi, perangkat membaca digital, asisten pribadi berbasis suara, dan model bisnis baru seperti pasar pihak ketiga. Kemampuannya untuk meningkatkan skala operasi dengan cepat, seperti terlihat pada pesatnya perluasan pemenuhan dan jaringan transportasi, juga berkontribusi terhadap keberhasilannya. Selain itu, fokus Amazon pada optimalisasi dan peningkatan efisiensi dalam prosesnya telah menghasilkan peningkatan produktivitas dan pengurangan biaya. Contoh Amazon Business menyoroti kemampuan perusahaan untuk memanfaatkan kekuatan e-commerce dan logistiknya di berbagai sektor. Berdasarkan tanggapan dari rantai pengambilan reguler, kami melihat bahwa meskipun memberikan jawaban yang panjang, rantai tersebut mengalami luapan konteks dan gagal menyebutkan detail penting apa pun dari korpus sehubungan dengan respons terhadap kueri yang diberikan. Rantai pengambilan reguler tidak mampu menangkap nuansa yang mendalam atau berwawasan kontekstual, sehingga berpotensi menghilangkan aspek-aspek penting dari dokumen.
Output Pengambil Dokumen Induk AWS (Amazon Web Services) dimulai dengan peluncuran awal layanan Elastic Compute Cloud (EC2) yang miskin fitur pada tahun 2006, hanya menyediakan satu ukuran instans, di satu pusat data, di satu wilayah di dunia, dengan instans sistem operasi Linux saja , dan tanpa banyak fitur utama seperti pemantauan, penyeimbangan beban, penskalaan otomatis, atau penyimpanan persisten. Namun, kesuksesan AWS memungkinkan mereka dengan cepat mengulangi dan menambahkan kemampuan yang hilang, yang pada akhirnya berkembang untuk menawarkan berbagai varian, ukuran, dan optimalisasi komputasi, penyimpanan, dan jaringan, serta mengembangkan chip mereka sendiri (Graviton) untuk mendorong harga dan kinerja lebih jauh lagi. . Proses inovasi berulang AWS memerlukan investasi yang signifikan dalam sumber daya keuangan dan sumber daya manusia selama 20 tahun, seringkali jauh sebelum pembayaran akan dibayarkan, untuk memenuhi kebutuhan pelanggan dan meningkatkan pengalaman pelanggan, loyalitas, dan keuntungan jangka panjang bagi pemegang saham. Amazon sukses karena kemampuannya yang terus berinovasi, beradaptasi dengan perubahan kondisi pasar, dan memenuhi kebutuhan pelanggan di berbagai segmen pasar. Hal ini terbukti dalam keberhasilan Amazon Business, yang telah berkembang hingga mendorong penjualan kotor tahunan sebesar $35 miliar dengan memberikan pilihan, nilai, dan kenyamanan kepada pelanggan bisnis. Investasi Amazon dalam kemampuan e-niaga dan logistik juga memungkinkan terciptanya layanan seperti Beli dengan Prime, yang membantu pedagang dengan situs web langsung ke konsumen mendorong konversi dari penayangan menjadi pembelian. Pengambil dokumen induk menggali lebih dalam mengenai strategi pertumbuhan AWS secara spesifik, termasuk proses berulang dalam penambahan fitur baru berdasarkan umpan balik pelanggan dan perjalanan terperinci dari peluncuran awal yang miskin fitur hingga posisi pasar yang dominan, sambil memberikan respons yang kaya konteks . Responsnya mencakup berbagai aspek, mulai dari inovasi teknis dan strategi pasar hingga efisiensi organisasi dan fokus pelanggan, memberikan pandangan holistik tentang faktor-faktor yang berkontribusi terhadap kesuksesan beserta contohnya. Hal ini dapat dikaitkan dengan kemampuan pencarian yang ditargetkan namun luas dari pengambilan dokumen induk.
Ekstraktor Rantai LLM: Keluaran Kompresi Kontekstual AWS berevolusi dengan memulai sebagai proyek kecil di Amazon, yang memerlukan investasi modal besar dan menghadapi skeptisisme baik dari dalam maupun luar perusahaan. Namun, AWS memiliki keunggulan dalam menghadapi pesaing potensial dan percaya pada nilai yang dapat diberikannya kepada pelanggan dan Amazon. AWS membuat komitmen jangka panjang untuk terus berinvestasi, sehingga menghasilkan lebih dari 3,300 fitur dan layanan baru yang diluncurkan pada tahun 2022. AWS telah mengubah cara pelanggan mengelola infrastruktur teknologi mereka dan telah menjadi bisnis dengan tingkat pendapatan tahunan sebesar $85 miliar dengan profitabilitas yang kuat. AWS juga terus meningkatkan penawarannya, seperti menyempurnakan EC2 dengan fitur dan layanan tambahan setelah peluncuran awalnya. Berdasarkan konteks yang diberikan, keberhasilan Amazon dapat dikaitkan dengan ekspansi strategisnya dari platform penjualan buku ke pasar global dengan ekosistem penjual pihak ketiga yang dinamis, investasi awal di AWS, inovasi dalam memperkenalkan Kindle dan Alexa, dan pertumbuhan yang substansial. dalam pendapatan tahunan dari tahun 2019 hingga 2022. Pertumbuhan ini menyebabkan perluasan jangkauan pusat pemenuhan, penciptaan jaringan transportasi jarak jauh, dan pembangunan jaringan pusat penyortiran baru, yang dioptimalkan untuk produktivitas dan pengurangan biaya. Ekstraktor rantai LLM menjaga keseimbangan antara mencakup poin-poin penting secara komprehensif dan menghindari kedalaman yang tidak perlu. Ini secara dinamis menyesuaikan dengan konteks kueri, sehingga hasilnya langsung relevan dan komprehensif.
Filter Rantai LLM: Output Kompresi Kontekstual AWS (Amazon Web Services) berevolusi dengan awalnya meluncurkan fitur yang buruk tetapi melakukan iterasi dengan cepat berdasarkan umpan balik pelanggan untuk menambahkan kemampuan yang diperlukan. Pendekatan ini memungkinkan AWS meluncurkan EC2 pada tahun 2006 dengan fitur terbatas dan kemudian terus menambahkan fungsi baru, seperti ukuran instans tambahan, pusat data, wilayah, opsi sistem operasi, alat pemantauan, penyeimbangan beban, penskalaan otomatis, dan penyimpanan persisten. Seiring berjalannya waktu, AWS bertransformasi dari layanan yang minim fitur menjadi bisnis bernilai miliaran dolar dengan berfokus pada kebutuhan pelanggan, kelincahan, inovasi, efisiensi biaya, dan keamanan. AWS kini memiliki tingkat pendapatan tahunan sebesar $85 miliar dan menawarkan lebih dari 3,300 fitur dan layanan baru setiap tahunnya, melayani berbagai pelanggan mulai dari perusahaan rintisan hingga perusahaan multinasional dan organisasi sektor publik. Amazon sukses karena model bisnisnya yang inovatif, kemajuan teknologi yang berkelanjutan, dan perubahan organisasi yang strategis. Perusahaan ini secara konsisten mendisrupsi industri tradisional dengan memperkenalkan ide-ide baru, seperti platform ecommerce untuk berbagai produk dan layanan, pasar pihak ketiga, layanan infrastruktur cloud (AWS), e-reader Kindle, dan asisten pribadi berbasis suara Alexa. . Selain itu, Amazon telah melakukan perubahan struktural untuk meningkatkan efisiensinya, seperti mengatur ulang jaringan pemenuhannya di AS untuk mengurangi biaya dan waktu pengiriman, sehingga semakin berkontribusi terhadap keberhasilannya. Mirip dengan ekstraktor rantai LLM, filter rantai LLM memastikan bahwa meskipun poin-poin utama tercakup, hasilnya efisien bagi pelanggan yang mencari jawaban ringkas dan kontekstual.

Setelah membandingkan teknik-teknik yang berbeda ini, kita dapat melihat bahwa dalam konteks seperti merinci transisi AWS dari layanan sederhana menjadi entitas yang kompleks dan bernilai miliaran dolar, atau menjelaskan keberhasilan strategis Amazon, rantai pengambilan reguler tidak memiliki ketepatan yang ditawarkan oleh teknik yang lebih canggih. menyebabkan informasi menjadi kurang tepat sasaran. Meskipun sangat sedikit perbedaan yang terlihat antara teknik-teknik canggih yang dibahas, teknik-teknik tersebut jauh lebih informatif daripada rantai retriever biasa.

Bagi pelanggan di industri seperti layanan kesehatan, telekomunikasi, dan keuangan yang ingin menerapkan RAG dalam aplikasi mereka, keterbatasan rantai retriever reguler dalam memberikan presisi, menghindari redundansi, dan mengompresi informasi secara efektif menjadikannya kurang cocok untuk memenuhi kebutuhan ini dibandingkan ke pengambilan dokumen induk yang lebih canggih dan teknik kompresi kontekstual. Teknik-teknik ini mampu menyaring sejumlah besar informasi menjadi wawasan yang terkonsentrasi dan berdampak yang Anda perlukan, sekaligus membantu meningkatkan kinerja harga.

Membersihkan

Setelah selesai menjalankan buku catatan, hapus sumber daya yang Anda buat untuk menghindari timbulnya biaya untuk sumber daya yang digunakan:

# Delete resources
llm_predictor.delete_model()
llm_predictor.delete_endpoint()
embedding_predictor.delete_model()
embedding_predictor.delete_endpoint()

Kesimpulan

Dalam postingan ini, kami menyajikan solusi yang memungkinkan Anda menerapkan pengambilan dokumen induk dan teknik rantai kompresi kontekstual untuk meningkatkan kemampuan LLM dalam memproses dan menghasilkan informasi. Kami menguji teknik RAG tingkat lanjut ini dengan model Mixtral-8x7B Instruct dan BGE Large En yang tersedia dengan SageMaker JumpStart. Kami juga mengeksplorasi penggunaan penyimpanan persisten untuk penyematan dan potongan dokumen serta integrasi dengan penyimpanan data perusahaan.

Teknik yang kami lakukan tidak hanya menyempurnakan cara model LLM mengakses dan menggabungkan pengetahuan eksternal, namun juga secara signifikan meningkatkan kualitas, relevansi, dan efisiensi keluarannya. Dengan menggabungkan pengambilan dari korpora teks besar dengan kemampuan pembuatan bahasa, teknik RAG canggih ini memungkinkan LLM menghasilkan respons yang lebih faktual, koheren, dan sesuai konteks, sehingga meningkatkan kinerjanya dalam berbagai tugas pemrosesan bahasa alami.

SageMaker JumpStart adalah inti dari solusi ini. Dengan SageMaker JumpStart, Anda mendapatkan akses ke beragam model sumber terbuka dan tertutup, menyederhanakan proses memulai ML dan memungkinkan eksperimen dan penerapan cepat. Untuk mulai menerapkan solusi ini, navigasikan ke notebook di GitHub repo.


Tentang Penulis

Niithiyn Vijeaswaran adalah Arsitek Solusi di AWS. Area fokusnya adalah AI generatif dan Akselerator AI AWS. Beliau memegang gelar Sarjana di bidang Ilmu Komputer dan Bioinformatika. Niithiyn bekerja sama dengan tim Generative AI GTM untuk mendukung pelanggan AWS di berbagai bidang dan mempercepat adopsi AI generatif. Dia penggemar berat Dallas Mavericks dan suka mengoleksi sepatu kets.

Sebastian Bustillo adalah Arsitek Solusi di AWS. Dia berfokus pada teknologi AI/ML dengan minat mendalam pada AI generatif dan akselerator komputasi. Di AWS, dia membantu pelanggan membuka nilai bisnis melalui AI generatif. Saat dia tidak sedang bekerja, dia menikmati menyeduh secangkir kopi spesial yang sempurna dan menjelajahi dunia bersama istrinya.

Armando Diazo adalah Arsitek Solusi di AWS. Dia berfokus pada AI generatif, AI/ML, dan Analisis Data. Di AWS, Armando membantu pelanggan mengintegrasikan kemampuan AI generatif mutakhir ke dalam sistem mereka, mendorong inovasi dan keunggulan kompetitif. Saat dia tidak sedang bekerja, dia menikmati menghabiskan waktu bersama istri dan keluarganya, mendaki gunung, dan berkeliling dunia.

Dr.Farooq Sabir adalah Arsitek Solusi Spesialis Kecerdasan Buatan dan Pembelajaran Mesin Senior di AWS. Dia memegang gelar PhD dan MS di bidang Teknik Listrik dari University of Texas di Austin dan MS di bidang Ilmu Komputer dari Georgia Institute of Technology. Dia memiliki lebih dari 15 tahun pengalaman kerja dan juga suka mengajar dan membimbing mahasiswa. Di AWS, dia membantu pelanggan merumuskan dan memecahkan masalah bisnis mereka dalam ilmu data, pembelajaran mesin, visi komputer, kecerdasan buatan, pengoptimalan numerik, dan domain terkait. Berbasis di Dallas, Texas, dia dan keluarganya suka bepergian dan melakukan perjalanan jauh.

Marco Punio adalah Arsitek Solusi yang berfokus pada strategi AI generatif, solusi AI terapan, dan melakukan penelitian untuk membantu pelanggan melakukan skala besar di AWS. Marco adalah penasihat cloud asli digital dengan pengalaman di bidang FinTech, Kesehatan & Ilmu Hayati, Perangkat Lunak sebagai layanan, dan yang terbaru, di industri Telekomunikasi. Dia adalah seorang teknolog berkualifikasi dengan minat terhadap pembelajaran mesin, kecerdasan buatan, dan merger & akuisisi. Marco tinggal di Seattle, WA dan senang menulis, membaca, berolahraga, dan membuat aplikasi di waktu luangnya.

AJ Dhimine adalah Arsitek Solusi di AWS. Ia berspesialisasi dalam AI generatif, komputasi tanpa server, dan analisis data. Beliau merupakan anggota/mentor aktif di Komunitas Bidang Teknis Pembelajaran Mesin dan telah menerbitkan beberapa makalah ilmiah tentang berbagai topik AI/ML. Dia bekerja dengan pelanggan, mulai dari perusahaan rintisan hingga perusahaan, untuk mengembangkan solusi AI generatif yang luar biasa. Dia sangat tertarik memanfaatkan Model Bahasa Besar untuk analisis data tingkat lanjut dan mengeksplorasi aplikasi praktis yang mengatasi tantangan dunia nyata. Di luar pekerjaan, AJ senang bepergian, dan saat ini berada di 53 negara dengan tujuan mengunjungi setiap negara di dunia.

tempat_img

Intelijen Terbaru

tempat_img

Hubungi kami

Hai, yang di sana! Apa yang bisa saya bantu?