cari
RumahPeranti teknologiAICara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack

Bayangkan anda sedang membina sokongan pelanggan AI yang perlu menjawab soalan mengenai produk anda. Kadang -kadang ia perlu menarik maklumat dari dokumentasi anda, sementara masa lain ia perlu mencari web untuk kemas kini terkini. Sistem RAG Agentic berguna dalam jenis aplikasi AI yang kompleks. Fikirkan mereka sebagai pembantu penyelidik pintar yang bukan sahaja mengetahui dokumentasi dalaman anda tetapi juga membuat keputusan untuk mencari web. Dalam panduan ini, kami akan melalui proses membina sistem RAG QA yang agentik menggunakan kerangka haystack.

Objektif Pembelajaran

  • Ketahui apa yang agensi dan memahami bagaimana ia berbeza dari sistem kain.
  • Biasakan Rangka Kerja Haystack untuk Aplikasi LLM Agentic.
  • memahami proses bangunan segera dari templat dan belajar bagaimana untuk bergabung dengan arahan yang berlainan.
  • Ketahui cara membuat embedding menggunakan Chromadb di haystack.
  • Ketahui cara menubuhkan sistem pembangunan tempatan yang lengkap daripada membenamkan ke generasi.
Artikel ini diterbitkan sebagai sebahagian daripada Blogathon Sains Data

Jadual Kandungan Apa itu Agentic LLM? Komponen Blok Pipeline > Paip Pengindeksan

Melaksanakan router

    Buat templat prompt
    • Melaksanakan Pipeline Query
    • Lukiskan Pipeline Grafik
  • Apa itu llm yang agentik?
    • LLM Agentic adalah sistem AI yang boleh membuat keputusan secara autonomi dan mengambil tindakan berdasarkan pemahamannya tentang tugas itu. Tidak seperti LLM tradisional yang terutamanya menjana respons teks, LLM yang agentik boleh melakukan lebih banyak lagi.
    • Ia boleh berfikir, merancang, dan bertindak dengan input manusia yang minimum. Ia menilai pengetahuannya, mengiktiraf apabila memerlukan lebih banyak maklumat atau alat luaran.
    Agentic LLMS
  • Jangan bergantung pada data statik atau pengetahuan yang diindeks, sebaliknya, mereka memutuskan sumber yang harus dipercayai dan bagaimana untuk mengumpulkan pandangan terbaik.
    • Sistem jenis ini juga boleh memilih alat yang sesuai untuk pekerjaan itu. Ia boleh membuat keputusan apabila perlu mengambil dokumen, menjalankan pengiraan, atau mengautomasikan tugas. Apa yang membezakannya adalah keupayaannya untuk memecahkan masalah yang rumit ke dalam langkah -langkah dan melaksanakannya secara bebas yang menjadikannya bernilai untuk penyelidikan, analisis, dan automasi aliran kerja.
    • Rag vs Agentic Rag

      sistem kain tradisional mengikuti proses linear. Apabila pertanyaan diterima, sistem pertama mengenal pasti unsur -unsur utama dalam permintaan. Ia kemudian mencari asas pengetahuan, mengimbas maklumat yang relevan yang dapat membantu merancang tindak balas yang tepat. Sebaik sahaja maklumat atau data yang berkaitan diambil, sistem memprosesnya untuk menghasilkan tindak balas yang bermakna dan kontekstual yang relevan.

      anda dapat memahami proses dengan mudah oleh rajah di bawah.

      Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack Sekarang, sistem kain ragak meningkatkan proses ini dengan:

      Menilai keperluan pertanyaan
      • memutuskan antara pelbagai sumber pengetahuan
      • berpotensi menggabungkan maklumat dari sumber yang berbeza
      • membuat keputusan autonomi mengenai strategi tindak balas
      • Menyediakan respons yang disusun sumber
      • Perbezaan utama terletak pada keupayaan sistem untuk membuat keputusan pintar tentang cara mengendalikan pertanyaan, dan bukannya mengikuti corak generasi pengambilan tetap.

      Memahami Komponen Rangka Kerja Haystack

      Haystack adalah rangka kerja sumber terbuka untuk membina aplikasi AI, aplikasi LLM, saluran paip RAG, dan sistem carian. Ia

      menawarkan rangka kerja yang kuat dan fleksibel untuk membina aplikasi LLM. Ia membolehkan anda mengintegrasikan model dari pelbagai platform seperti Huggingface, Openai, Cohere, Mistral, dan Ollama tempatan. Anda juga boleh menggunakan model pada perkhidmatan awan seperti SageMaker AWS, Bedrock, Azure, dan GCP.

      Haystack menyediakan kedai dokumen yang mantap untuk pengurusan data yang cekap. Ia juga dilengkapi dengan satu set alat yang komprehensif untuk penilaian, pemantauan, dan integrasi data yang memastikan prestasi lancar di semua lapisan aplikasi anda. Ia juga mempunyai kerjasama komuniti yang kuat yang menjadikan integrasi perkhidmatan baru dari pelbagai penyedia perkhidmatan secara berkala.

      Apa yang boleh anda bina menggunakan haystack?

      mudah untuk memajukan kain pada data anda, menggunakan teknik pengambilan dan generasi yang mantap. Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack

      chatbot dan ejen menggunakan model genai terkini seperti GPT-4, Llama3.2, DeepSeek-R1.

      Sistem pertanyaan multimodal generatif pada jenis campuran (imej, teks, audio, dan jadual) asas pengetahuan.
      • Pengekstrakan maklumat dari dokumen atau membina graf pengetahuan.
      • Blok Bangunan Haystack
      • Haystack mempunyai dua konsep utama untuk membina sistem Genai LLM yang berfungsi sepenuhnya - komponen dan saluran paip. Mari kita fahami mereka dengan contoh mudah kain pada watak anime Jepun
      • Komponen

        Komponen adalah blok bangunan teras haystack. Mereka boleh melaksanakan tugas seperti penyimpanan dokumen, pengambilan dokumen, penjanaan teks, dan embedding. Haystack mempunyai banyak komponen yang boleh anda gunakan secara langsung selepas pemasangan, ia juga menyediakan API untuk membuat komponen anda sendiri dengan menulis kelas python.

        Terdapat koleksi integrasi dari syarikat rakan kongsi dan masyarakat.

        Pasang perpustakaan dan tetapkan ollama

        $ pip install haystack-ai ollama-haystack
        
        # On you system download Ollama and install LLM
        
        ollama pull llama3.2:3b
        
        ollama pull nomic-embed-text
        
        
        # And then start ollama server
        ollama serve

        Import beberapa komponen

        from haystack import Document, Pipeline
        from haystack.components.builders.prompt_builder import PromptBuilder
        from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
        from haystack.document_stores.in_memory import InMemoryDocumentStore
        from haystack_integrations.components.generators.ollama import OllamaGenerator

        Buat dokumen dan kedai dokumen

        document_store = InMemoryDocumentStore()
        documents = [
            Document(
                content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
            ),
            Document(
                content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
            ),
            Document(
                content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
            ),
            Document(
                content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
            ),
            Document(
                content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
            ),
        ]

        Pipeline

        saluran paip adalah tulang belakang kerangka Haystack. Mereka menentukan aliran data antara komponen yang berbeza. Pipelin pada dasarnya adalah graf acyclic yang diarahkan (DAG). Komponen tunggal dengan pelbagai output boleh menyambung ke komponen tunggal lain dengan pelbagai input.

        anda boleh menentukan saluran paip dengan

        pipe = Pipeline()
        
        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        pipe.connect("retriever", "prompt_builder.documents")
        pipe.connect("prompt_builder", "llm")

        anda boleh memvisualisasikan saluran paip

        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)

        Pipeline menyediakan:

        • Pengurusan aliran kerja modular
        • susunan komponen fleksibel
        • debugging dan pemantauan mudah
        • Arsitektur pemprosesan berskala

        nod

        nod adalah unit pemprosesan asas yang boleh disambungkan dalam saluran paip nod ini adalah komponen yang melakukan tugas tertentu.

        Contoh nod dari saluran paip di atas

        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        

        graf sambungan

        Connectiongraph menentukan bagaimana komponen berinteraksi.

        Dari saluran paip di atas, anda boleh memvisualisasikan graf sambungan.

        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)

        graf sambungan saluran paip anime

        Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack

        Struktur graf ini:

          mentakrifkan aliran data antara komponen
        • Menguruskan hubungan input/output
        • membolehkan pemprosesan selari di mana mungkin
        • Mewujudkan laluan pemprosesan yang fleksibel.
        Sekarang kita boleh menanyakan asas pengetahuan anime kita menggunakan prompt.

        Buat template prompt

        template = """
        Given only the following information, answer the question.
        Ignore your own knowledge.
        
        Context:
        {% for document in documents %}
            {{ document.content }}
        {% endfor %}
        
        Question: {{ query }}?
        """
        Prompt ini akan memberikan jawapan yang mengambil maklumat dari pangkalan dokumen.

        pertanyaan menggunakan prompt dan retriever

        query = "How Goku eliminate people?"
        response = pipe.run({"prompt_builder": {"query": query}, "retriever": {"query": query}})
        print(response["llm"]["replies"])

        Response:

        Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack RAG ini mudah tetapi konseptual berharga kepada pendatang baru. Sekarang kita telah memahami kebanyakan konsep kerangka haystack, kita dapat menyelam ke dalam projek utama kita. Sekiranya ada perkara baru, saya akan menerangkan sepanjang jalan.

        Projek Rag Soalan-Jawab untuk Fizik Menengah Tinggi

        kami akan membina soalan berasaskan buku Fizik NCERT RAG untuk pelajar menengah yang lebih tinggi. Ia akan memberikan jawapan kepada pertanyaan dengan mengambil maklumat dari buku NCERT, dan jika maklumat itu tidak ada, ia akan mencari web untuk mendapatkan maklumat itu. Untuk ini, saya akan menggunakan:

          Local Llama3.2: 3b atau llama3.2: 1b
        • chromadb untuk penyimpanan embedding
        • Model Teks Nomic Embed untuk Embedding Tempatan
        • DuckDuckGo Carian untuk carian web atau carian tavily (pilihan)
        Saya menggunakan sistem yang bebas dan benar -benar setempat.

        menyediakan persekitaran pemaju

        kami akan menyediakan conda env python 3.12

        $ pip install haystack-ai ollama-haystack
        
        # On you system download Ollama and install LLM
        
        ollama pull llama3.2:3b
        
        ollama pull nomic-embed-text
        
        
        # And then start ollama server
        ollama serve
        Pasang pakej yang diperlukan

        from haystack import Document, Pipeline
        from haystack.components.builders.prompt_builder import PromptBuilder
        from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
        from haystack.document_stores.in_memory import InMemoryDocumentStore
        from haystack_integrations.components.generators.ollama import OllamaGenerator
        Sekarang buat direktori projek bernama

        qagent .

        document_store = InMemoryDocumentStore()
        documents = [
            Document(
                content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
            ),
            Document(
                content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
            ),
            Document(
                content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
            ),
            Document(
                content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
            ),
            Document(
                content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
            ),
        ]
        Anda boleh menggunakan fail python biasa untuk projek atau buku nota Jupyter untuk projek itu tidak penting. Saya akan menggunakan fail python biasa.

        Buat fail

        main.py pada root projek.

        Mengimport perpustakaan yang diperlukan

          pakej sistem
        • Komponen Haystack Core
        • ChromAdb untuk Komponen Embedding
        • komponen ollama untuk kesimpulan tempatan
        • dan duckduckgo untuk carian web
        pipe = Pipeline()
        
        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        pipe.connect("retriever", "prompt_builder.documents")
        pipe.connect("prompt_builder", "llm")
        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)
        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        
        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)
        template = """
        Given only the following information, answer the question.
        Ignore your own knowledge.
        
        Context:
        {% for document in documents %}
            {{ document.content }}
        {% endfor %}
        
        Question: {{ query }}?
        """
        Membuat kedai dokumen

        Dokumen Kedai adalah yang paling penting di sini kami akan menyimpan embedding kami untuk mendapatkan semula, kami menggunakan

        Chromadb untuk kedai embedding, dan seperti yang anda lihat dalam contoh yang lebih awal, kami menggunakan InMemoryDocumentStore untuk mendapatkan semula yang cepat dan akan menjadi lebih baik, sistem.

        Penyelesaiannya adalah pangkalan data vektor seperti pinecode, weaviate, postgres vector db, atau chromadb. Saya menggunakan Chromadb kerana percuma, sumber terbuka, mudah digunakan, dan teguh.

        query = "How Goku eliminate people?"
        response = pipe.run({"prompt_builder": {"query": query}, "retriever": {"query": query}})
        print(response["llm"]["replies"])

        ENTERT_PATH di mana anda ingin menyimpan embedding anda.

        jalur fail pdf

        $conda create --name agenticlm python=3.12
        
        $conda activate agenticlm
        ia akan membuat senarai fail dari folder data yang terdiri daripada fail PDF kami.

        Dokumen Preprocessing Components

        Kami akan menggunakan preprocessor dokumen terbina dalam Haystack seperti Cleaner, Splitter, dan File Converter, dan kemudian menggunakan seorang penulis untuk menulis data ke dalam kedai.

        Cleaner: Ia akan membersihkan ruang tambahan, garis berulang, garis kosong, dan lain -lain dari dokumen.

        $pip install haystack-ai ollama-haystack pypdf
        
        $pip install chroma-haystack duckduckgo-api-haystack

        Splitter: Ia akan memecah dokumen dalam pelbagai cara seperti kata -kata, ayat, para, halaman.

        $md qagent # create dir
        
        $cd qagent # change to dir
        
        $ code .   # open folder in vscode

        File Converter: Ia akan menggunakan PYPDF untuk menukar PDF ke dokumen.

        $ pip install haystack-ai ollama-haystack
        
        # On you system download Ollama and install LLM
        
        ollama pull llama3.2:3b
        
        ollama pull nomic-embed-text
        
        
        # And then start ollama server
        ollama serve

        penulis: Ia akan menyimpan dokumen di mana anda ingin menyimpan dokumen dan untuk dokumen pendua, ia akan menimpa dengan sebelumnya.

        from haystack import Document, Pipeline
        from haystack.components.builders.prompt_builder import PromptBuilder
        from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
        from haystack.document_stores.in_memory import InMemoryDocumentStore
        from haystack_integrations.components.generators.ollama import OllamaGenerator

        sekarang tetapkan embedder untuk pengindeksan dokumen.

        Embedder: Nomic Embed Text

        kami akan menggunakan penyembuhan teks-teks nomik yang sangat berkesan dan bebas inhuggingface dan ollama.

        Sebelum anda menjalankan saluran paip pengindeksan anda buka terminal anda dan taipkan di bawah untuk menarik model-teks-teks dan Llama3.2: 3B dari kedai model Ollama

        document_store = InMemoryDocumentStore()
        documents = [
            Document(
                content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
            ),
            Document(
                content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
            ),
            Document(
                content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
            ),
            Document(
                content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
            ),
            Document(
                content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
            ),
        ]

        dan mulakan ollama dengan menaip arahan ollama berkhidmat di terminal anda

        kini komponen embedder

        pipe = Pipeline()
        
        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        pipe.connect("retriever", "prompt_builder.documents")
        pipe.connect("prompt_builder", "llm")

        kami menggunakan komponen untuk membenamkan dokumen, tetapi jika anda ingin membenamkan rentetan teks maka anda perlu menggunakan ollamatextembedder.

        Membuat Pipeline Pengindeksan

        Seperti contoh Rag Toy sebelumnya, kita akan mulakan dengan memulakan kelas saluran paip.

        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)
        Sekarang kita akan menambah komponen ke saluran paip kita satu demi satu

        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        
        Menambah komponen ke saluran paip tidak peduli dengan perintah jadi, anda boleh menambah komponen dalam apa -apa perintah. Tetapi menghubungkan adalah yang penting.

        Menghubungkan komponen ke graf saluran paip

        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)
        di sini, pesanan perkara, kerana bagaimana anda menyambungkan komponen memberitahu saluran paip bagaimana data akan mengalir melalui saluran paip. Ia seperti, tidak penting di mana perintah atau dari mana anda membeli barang paip anda tetapi bagaimana untuk meletakkannya bersama -sama akan memutuskan sama ada anda mendapat air anda atau tidak.

        Penukar menukarkan PDF dan menghantarnya untuk membersihkan untuk membersihkan. Kemudian pembersih menghantar dokumen yang dibersihkan ke splitter untuk chunking. Ketulan -ketulan itu kemudiannya akan ditanam untuk vektorisasi, dan yang terakhir tertanam akan menyerahkan embeddings ini kepada penulis untuk penyimpanan.

        faham! Ok, izinkan saya memberi anda graf visual pengindeksan supaya anda dapat memeriksa aliran data.

        Lukis saluran paip pengindeksan

        template = """
        Given only the following information, answer the question.
        Ignore your own knowledge.
        
        Context:
        {% for document in documents %}
            {{ document.content }}
        {% endfor %}
        
        Question: {{ query }}?
        """
        Ya, anda boleh membuat graf duyung yang bagus dari saluran paip haystack dengan mudah. ​​

        Grafik Paip Pengindeksan

        Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack Saya menganggap sekarang anda telah memahami sepenuhnya idea di sebalik saluran paip jerami. Bersyukurlah kepada anda tukang paip.

        Melaksanakan penghala

        Sekarang, kita perlu membuat penghala untuk mengarahkan data melalui jalan yang berbeza. Dalam kes ini, kami akan menggunakan penghala bersyarat yang akan melakukan kerja penghalaan kami pada keadaan tertentu.

        Penghala bersyarat akan menilai syarat berdasarkan output komponen. Ia akan mengarahkan aliran data melalui cawangan saluran paip yang berbeza yang membolehkan membuat keputusan dinamik. Ia juga akan mempunyai strategi sandaran yang mantap.

        $ pip install haystack-ai ollama-haystack
        
        # On you system download Ollama and install LLM
        
        ollama pull llama3.2:3b
        
        ollama pull nomic-embed-text
        
        
        # And then start ollama server
        ollama serve

        Apabila sistem mendapat balasan no_answer dari konteks penyimpanan embedding, maka ia akan pergi ke alat carian web untuk mengumpul data yang relevan dari internet.

        Untuk carian web, kami akan menggunakan API DuckDuckgo atau Tavily, di sini saya telah menggunakan DuckDuckGo.

        from haystack import Document, Pipeline
        from haystack.components.builders.prompt_builder import PromptBuilder
        from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
        from haystack.document_stores.in_memory import InMemoryDocumentStore
        from haystack_integrations.components.generators.ollama import OllamaGenerator
        OK, kebanyakan pengangkat berat telah dilakukan. Sekarang, masa untuk kejuruteraan segera

        Buat templat prompt

        kami akan menggunakan komponen haystack promptbuilder untuk membina arahan dari templat

        Pertama, kami akan membuat prompt untuk qa

        document_store = InMemoryDocumentStore()
        documents = [
            Document(
                content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
            ),
            Document(
                content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
            ),
            Document(
                content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
            ),
            Document(
                content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
            ),
            Document(
                content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
            ),
        ]
        Ia akan mengambil konteks dari dokumen dan cuba menjawab soalan. Tetapi jika ia tidak menemui konteks yang relevan dalam dokumen, ia akan membalas no_answer.

        Sekarang, dalam proses kedua selepas mendapat No_answer dari LLM, sistem akan menggunakan alat carian web untuk mengumpulkan konteks dari Internet.

        template prompt duckduckgo

        pipe = Pipeline()
        
        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        pipe.connect("retriever", "prompt_builder.documents")
        pipe.connect("prompt_builder", "llm")
        ia akan memudahkan sistem untuk pergi ke carian web dan cuba menjawab pertanyaan.

        3

        kami akan menggunakan haystack prompt joiner untuk menyertai cawangan -cawangan yang dipenuhi bersama.

        Melaksanakan saluran paip pertanyaan
        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)

        Pipeline pertanyaan akan membenamkan sumber -sumber kontekstual yang mengumpul pertanyaan dari embeddings dan menjawab pertanyaan kami menggunakan alat carian LLM atau web.

        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        
        ia sama dengan saluran paip pengindeksan.

        Memulakan saluran paip

        Menambah komponen ke saluran paip pertanyaan

        di sini, untuk generasi LLM kita menggunakan komponen ollamagenerator untuk menjana jawapan menggunakan llama3.2: 3b atau 1b atau apa sahaja yang anda suka dengan alat yang memanggil.
        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)

        menyambungkan semua komponen bersama untuk aliran pertanyaan dan penjanaan jawapan

        template = """
        Given only the following information, answer the question.
        Ignore your own knowledge.
        
        Context:
        {% for document in documents %}
            {{ document.content }}
        {% endfor %}
        
        Question: {{ query }}?
        """

        Ringkasan sambungan di atas:

        penyembuhan dari text_embedder yang dihantar ke embedding pertanyaan retriever.
        query = "How Goku eliminate people?"
        response = pipe.run({"prompt_builder": {"query": query}, "retriever": {"query": query}})
        print(response["llm"]["replies"])

        Retriever menghantar data ke dokumen prompt_builder.

          pembina prompt pergi ke gabungan segera untuk bergabung dengan arahan lain.
        1. Joiner prompt meluluskan data ke LLM untuk generasi.
        2. Jawapan -balasan LLM pergi ke router untuk memeriksa sama ada jawapannya mempunyai
        3. no_answer
        4. atau tidak.
        5. carian web menghantar data ke carian carian web sebagai pertanyaan.
        6. Dokumen carian web Hantar data ke dokumen carian web.
        7. Prompt carian web menghantar data ke gabungan segera. dan penyokong segera akan menghantar data ke LLM untuk penjanaan jawapan.
        8. mengapa tidak melihat sendiri?
        9. lukis graf paip pertanyaan
        10. Grafik pertanyaan

        Saya tahu ia adalah graf yang besar tetapi ia akan menunjukkan kepada anda apa yang berlaku di bawah perut binatang.

        sekarang sudah tiba masanya untuk menikmati buah kerja keras kami.

        Buat fungsi untuk pertanyaan mudah. ​​

        $ pip install haystack-ai ollama-haystack
        
        # On you system download Ollama and install LLM
        
        ollama pull llama3.2:3b
        
        ollama pull nomic-embed-text
        
        
        # And then start ollama server
        ollama serve

        ia adalah fungsi mudah yang mudah untuk penjanaan jawapan.

        sekarang jalankan skrip utama anda untuk mengindeks buku fizik ncert

        from haystack import Document, Pipeline
        from haystack.components.builders.prompt_builder import PromptBuilder
        from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
        from haystack.document_stores.in_memory import InMemoryDocumentStore
        from haystack_integrations.components.generators.ollama import OllamaGenerator

        Ini adalah pekerjaan satu kali, selepas pengindeksan anda mesti mengulas pada baris ini jika tidak, ia akan mula mengindeks semula buku.

        dan bahagian bawah fail kami menulis kod pemacu kami untuk pertanyaan

        document_store = InMemoryDocumentStore()
        documents = [
            Document(
                content="Naruto Uzumaki is a ninja from the Hidden Leaf Village and aspires to become Hokage."
            ),
            Document(
                content="Luffy is the captain of the Straw Hat Pirates and dreams of finding the One Piece."
            ),
            Document(
                content="Goku, a Saiyan warrior, has defended Earth from numerous powerful enemies like Frieza and Cell."
            ),
            Document(
                content="Light Yagami finds a mysterious Death Note, which allows him to eliminate people by writing their names."
            ),
            Document(
                content="Levi Ackerman is humanity’s strongest soldier, fighting against the Titans to protect mankind."
            ),
        ]

        MCQ mengenai Resistivity dari Pengetahuan Buku

        Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack

        soalan lain yang tidak ada dalam buku

        pipe = Pipeline()
        
        pipe.add_component("retriever", InMemoryBM25Retriever(document_store=document_store))
        pipe.add_component("prompt_builder", PromptBuilder(template=template))
        pipe.add_component(
            "llm", OllamaGenerator(model="llama3.2:1b", url="http://localhost:11434")
        )
        pipe.connect("retriever", "prompt_builder.documents")
        pipe.connect("prompt_builder", "llm")

        output

        Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack mari kita cuba soalan lain.

        image_param = {
            "format": "img",
            "type": "png",
            "theme": "forest",
            "bgColor": "f2f3f4",
        }
        pipe.show(params=image_param)

        Jadi, ia berfungsi! Kita boleh menggunakan lebih banyak data, buku, atau PDF untuk membenamkan yang akan menghasilkan lebih banyak jawapan kontekstual. Juga, LLMs seperti GPT-4O, Claude Anthropic, atau LLM awan lain akan melakukan pekerjaan yang lebih baik. Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack

        Kesimpulan

        Sistem Rag Agentik kami menunjukkan fleksibiliti dan keteguhan kerangka haystack dengan kuasa menggabungkan komponen dan saluran paip. RAG ini boleh dibuat siap pengeluaran dengan menggunakan platform perkhidmatan web dan juga menggunakan LLM yang lebih baik seperti OpenAI, dan Nthropic. Anda boleh membina UI menggunakan SPA web berasaskan streamlit atau reaksi untuk pengalaman pengguna yang lebih baik.

        anda boleh mencari semua kod yang digunakan dalam artikel, di sini.

        Takeaways Key

        Sistem Rag Agentik memberikan lebih banyak respons pintar dan fleksibel daripada kain tradisional.

          Senibina saluran paip Haystack membolehkan aliran kerja kompleks, modular.
        • router membolehkan membuat keputusan dinamik dalam penjanaan tindak balas.
        • Grafik Sambungan menyediakan interaksi komponen yang fleksibel dan boleh dipelihara.
        • Integrasi pelbagai sumber pengetahuan meningkatkan kualiti tindak balas.
        • Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan pada budi bicara penulis
        .

        Soalan Lazim

        Q1. Bagaimanakah sistem mengendalikan pertanyaan yang tidak diketahui?

        a. Sistem ini menggunakan komponen routernya untuk secara automatik jatuh ke carian web apabila pengetahuan tempatan tidak mencukupi, memastikan liputan komprehensif. Q2. Apakah kelebihan yang ditawarkan oleh seni bina saluran paip?

        a. Senibina saluran paip membolehkan pembangunan modular, ujian mudah, dan susunan komponen yang fleksibel, menjadikan sistem ini dapat dipelihara dan diperluas. Q3. Bagaimanakah graf sambungan meningkatkan fungsi sistem?

        a. Grafik sambungan membolehkan aliran data kompleks dan pemprosesan selari, meningkatkan kecekapan sistem dan fleksibiliti dalam mengendalikan pelbagai jenis pertanyaan.

        Q4. Bolehkah saya menggunakan API LLM yang lain? a. Ya, sangat mudah hanya memasang pakej integrasi yang diperlukan untuk API LLM masing -masing seperti Gemini, Anthropic, dan Groq, dan menggunakannya dengan kekunci API anda.

Atas ialah kandungan terperinci Cara Membina Sistem Rag QA Agentik Menggunakan Rangka Kerja Haystack. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Saya cuba pengekodan getaran dengan kursor AI dan ia menakjubkan!Saya cuba pengekodan getaran dengan kursor AI dan ia menakjubkan!Mar 20, 2025 pm 03:34 PM

Pengekodan Vibe membentuk semula dunia pembangunan perisian dengan membiarkan kami membuat aplikasi menggunakan bahasa semulajadi dan bukannya kod yang tidak berkesudahan. Diilhamkan oleh penglihatan seperti Andrej Karpathy, pendekatan inovatif ini membolehkan Dev

Cara Menggunakan Dall-E 3: Contoh, Contoh, dan CiriCara Menggunakan Dall-E 3: Contoh, Contoh, dan CiriMar 09, 2025 pm 01:00 PM

Dall-E 3: Alat Penciptaan Imej AI Generatif AI Generatif merevolusi penciptaan kandungan, dan Dall-E 3, model penjanaan imej terbaru OpenAI, berada di barisan hadapan. Dikeluarkan pada bulan Oktober 2023, ia dibina pada pendahulunya, Dall-E dan Dall-E 2

Top 5 Genai dilancarkan pada Februari 2025: GPT-4.5, Grok-3 & More!Top 5 Genai dilancarkan pada Februari 2025: GPT-4.5, Grok-3 & More!Mar 22, 2025 am 10:58 AM

Februari 2025 telah menjadi satu lagi bulan yang berubah-ubah untuk AI generatif, membawa kita beberapa peningkatan model yang paling dinanti-nantikan dan ciri-ciri baru yang hebat. Dari Xai's Grok 3 dan Anthropic's Claude 3.7 Sonnet, ke Openai's G

Bagaimana cara menggunakan Yolo V12 untuk pengesanan objek?Bagaimana cara menggunakan Yolo V12 untuk pengesanan objek?Mar 22, 2025 am 11:07 AM

Yolo (anda hanya melihat sekali) telah menjadi kerangka pengesanan objek masa nyata yang terkemuka, dengan setiap lelaran bertambah baik pada versi sebelumnya. Versi terbaru Yolo V12 memperkenalkan kemajuan yang meningkatkan ketepatan

Elon Musk & Sam Altman bertembung lebih daripada $ 500 bilion projek StargateElon Musk & Sam Altman bertembung lebih daripada $ 500 bilion projek StargateMar 08, 2025 am 11:15 AM

Projek AI Stargate $ 500 bilion, yang disokong oleh gergasi teknologi seperti Openai, Softbank, Oracle, dan Nvidia, dan disokong oleh kerajaan A.S., bertujuan untuk mengukuhkan kepimpinan AI Amerika. Usaha bercita -cita tinggi ini menjanjikan masa depan yang dibentuk oleh AI Advanceme

Sora vs Veo 2: Mana yang mencipta video yang lebih realistik?Sora vs Veo 2: Mana yang mencipta video yang lebih realistik?Mar 10, 2025 pm 12:22 PM

Google's Veo 2 dan Openai's Sora: Generator Video AI Mana yang memerintah Supreme? Kedua -dua platform menghasilkan video AI yang mengagumkan, tetapi kekuatan mereka terletak di kawasan yang berbeza. Perbandingan ini, menggunakan pelbagai arahan, mendedahkan alat yang paling sesuai dengan keperluan anda. T

Google ' s Gencast: Peramalan Cuaca dengan Demo Mini GencastGoogle ' s Gencast: Peramalan Cuaca dengan Demo Mini GencastMar 16, 2025 pm 01:46 PM

Google Deepmind's Gencast: AI Revolusioner untuk Peramalan Cuaca Peramalan cuaca telah menjalani transformasi dramatik, bergerak dari pemerhatian asas kepada ramalan berkuasa AI yang canggih. Google Deepmind's Gencast, tanah air

AI mana yang lebih baik daripada chatgpt?AI mana yang lebih baik daripada chatgpt?Mar 18, 2025 pm 06:05 PM

Artikel ini membincangkan model AI yang melampaui chatgpt, seperti Lamda, Llama, dan Grok, menonjolkan kelebihan mereka dalam ketepatan, pemahaman, dan kesan industri. (159 aksara)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft