🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
  • Home
  • Blog
  • Saya Membangun Penelitian Mendalam dengan Open Source-dan Anda Juga Bisa!

Saya Membangun Penelitian Mendalam dengan Open Source-dan Anda Juga Bisa!

  • Tutorials
February 06, 2025
Stefan Webb

Sebenarnya, agen dengan cakupan minimal yang dapat bernalar, merencanakan, menggunakan alat bantu, dll. untuk melakukan penelitian menggunakan Wikipedia. Tetap saja, lumayan untuk beberapa jam kerja...

Kecuali jika Anda tinggal di bawah batu, di dalam gua, atau di biara pegunungan terpencil, Anda pasti sudah mendengar tentang rilis Deep Research dari OpenAI pada tanggal 2 Februari 2025. Produk baru ini menjanjikan untuk merevolusi cara kita menjawab pertanyaan yang membutuhkan sintesis sejumlah besar informasi yang beragam.

Anda mengetikkan pertanyaan Anda, memilih opsi Deep Research, dan platform secara mandiri mencari di web, melakukan penalaran atas apa yang ditemukannya, dan mensintesis berbagai sumber menjadi laporan yang koheren dan dikutip secara lengkap. Dibutuhkan beberapa kali lipat lebih lama untuk menghasilkan outputnya dibandingkan dengan chatbot standar, tetapi hasilnya lebih detail, lebih terinformasi, dan lebih bernuansa.

Bagaimana cara kerjanya?

Tapi bagaimana cara kerja teknologi ini, dan mengapa Deep Research merupakan peningkatan yang nyata dari upaya sebelumnya (seperti Google Deep Research - peringatan sengketa merek dagang yang masuk)? Kami akan membahas yang terakhir ini di artikel mendatang. Sedangkan untuk yang pertama, tidak diragukan lagi ada banyak "saus rahasia" yang mendasari Deep Research. Kita bisa mendapatkan beberapa detail dari postingan rilis OpenAI, yang saya rangkum.

Deep Research mengeksploitasi kemajuan terbaru dalam model fondasi yang dikhususkan untuk tugas-tugas penalaran:

  • "... disempurnakan pada model penalaran OpenAI o3 yang akan datang..."

  • "... memanfaatkan penalaran untuk mencari, menafsirkan, dan menganalisis teks dalam jumlah yang sangat besar..."

Deep Research memanfaatkan alur kerja agen yang canggih dengan perencanaan, refleksi, dan memori:

  • "... belajar untuk merencanakan dan melaksanakan lintasan multi-langkah..."

  • "... mundur ke belakang dan bereaksi terhadap informasi waktu nyata..."

  • "... berputar sesuai kebutuhan sebagai reaksi terhadap informasi yang ditemui..."

Deep Research dilatih menggunakan data milik sendiri, dengan menggunakan beberapa jenis penyempurnaan, yang kemungkinan besar merupakan komponen kunci dalam kinerjanya:

  • "... dilatih menggunakan pembelajaran penguatan end-to-end pada tugas-tugas penelusuran dan penalaran yang sulit di berbagai domain..."

  • "... dioptimalkan untuk penjelajahan web dan analisis data..."

Desain yang tepat dari alur kerja agen adalah sebuah rahasia, namun, kita dapat membangun sesuatu sendiri berdasarkan ide-ide yang sudah mapan tentang bagaimana menyusun agen.

Satu catatan sebelum kita mulai: Sangat mudah untuk terhanyut oleh demam AI Generatif, terutama ketika sebuah produk baru yang tampaknya merupakan sebuah langkah perbaikan dirilis. Namun, Deep Research, seperti yang diakui oleh OpenAI, memiliki keterbatasan yang umum terjadi pada teknologi AI Generatif. Kita harus ingat untuk berpikir kritis tentang output yang mungkin berisi fakta-fakta yang salah ("halusinasi"), format dan kutipan yang salah, dan sangat bervariasi dalam kualitas berdasarkan benih acak.

Dapatkah saya membuat sendiri?

Tentu saja bisa! Mari kita bangun "Penelitian Mendalam" kita sendiri, yang dijalankan secara lokal dan dengan alat bantu sumber terbuka. Kita hanya perlu berbekal pengetahuan dasar tentang Generative AI, akal sehat, beberapa jam luang, GPU, dan Milvus, DeepSeek R1, dan LangChain.

Tentu saja, kami tidak dapat meniru kinerja OpenAI, tetapi prototipe kami akan mendemonstrasikan secara minimal beberapa ide utama yang mungkin mendasari teknologi mereka, menggabungkan kemajuan dalam model penalaran dengan kemajuan dalam alur kerja agen. Yang terpenting, dan tidak seperti OpenAI, kami hanya akan menggunakan alat bantu sumber terbuka, dan dapat menggunakan sistem kami secara lokal - sumber terbuka tentu saja memberikan fleksibilitas yang tinggi!

Kita akan membuat beberapa asumsi penyederhanaan untuk mengurangi ruang lingkup proyek kita:

  • Kita akan menggunakan mode penalaran sumber terbuka yang disaring kemudian dikuantisasi untuk 4-bit yang dapat dijalankan secara lokal.

  • Kami tidak akan melakukan penyempurnaan tambahan pada model penalaran kami sendiri.

  • Satu-satunya alat yang dimiliki oleh agen kami adalah kemampuan untuk mengunduh dan membaca halaman Wikipedia dan melakukan kueri RAG yang terpisah (kami tidak akan memiliki akses ke seluruh web).

  • Agen kami hanya akan memproses data teks, bukan gambar, PDF, dll.

  • Agen kami tidak akan mundur atau mempertimbangkan pivot.

  • Agen kami akan (belum) mengontrol alur eksekusinya berdasarkan keluarannya.

  • Wikipedia berisi kebenaran, seluruh kebenaran, dan tidak ada yang lain selain kebenaran.

Kita akan menggunakan Milvus untuk basis data vektor kita, DeepSeek R1 sebagai model penalaran kita, dan LangChain untuk mengimplementasikan RAG. Mari kita mulai!

Kita akan menggunakan model mental kita tentang bagaimana manusia melakukan penelitian untuk merancang alur kerja agen:

Mendefinisikan/Menentukan Pertanyaan

Riset dimulai dengan mendefinisikan sebuah pertanyaan. Kami menganggap pertanyaan tersebut sebagai pertanyaan pengguna, namun, kami menggunakan model penalaran kami untuk memastikan pertanyaan tersebut diungkapkan dengan cara yang spesifik, jelas, dan terfokus. Artinya, langkah pertama kami adalah menulis ulang permintaan dan mengekstrak subkueri atau subpertanyaan. Kami memanfaatkan spesialisasi model dasar kami secara efektif untuk penalaran, dan metode sederhana untuk keluaran terstruktur JSON.

Berikut ini adalah contoh penelusuran penalaran saat DeepSeek menyempurnakan pertanyaan "Bagaimana pemeran berubah dari waktu ke waktu?":

<think>

Alright, so I need to break down the question "How has the cast changed over time?" related to the evolution of The Simpsons. Let me think about what aspects are involved here.

First, I know that the cast has changed a lot, but I need to figure out the intermediate questions to approach this. The main question is about changes in the cast over time, so I should consider different areas that contribute to this change.

I guess the first sub-question would be about the original cast members. Who were the main voices and how did they evolve? Then, there might be new cast additions over the years, so another sub-question about that.

Also, some original voice actors have left, so I should include a sub-question about departures. Then, new voice actors joining would be another point.

The show has been popular for a long time, so recurring roles changing might be another aspect. Additionally, the role of the show in society might have influenced casting choices, so a sub-question about that.

Lastly, the overall impact on the cast's careers could be another angle. So, I should list these as sub-questions to cover all aspects.

</think>

Selanjutnya, kami melakukan "tinjauan literatur" terhadap artikel-artikel Wikipedia. Untuk saat ini, kami membaca satu artikel dan meninggalkan tautan navigasi ke iterasi berikutnya. Kami menemukan selama pembuatan prototipe bahwa eksplorasi tautan dapat menjadi sangat mahal jika setiap tautan memerlukan panggilan ke model penalaran. Kami mengurai artikel, dan menyimpan datanya dalam basis data vektor kami, Milvus, mirip dengan membuat catatan.

Berikut ini adalah cuplikan kode yang menunjukkan bagaimana kami menyimpan halaman Wikipedia kami di Milvus menggunakan integrasi LangChain:

wiki_wiki = wikipediaapi.Wikipedia(user_agent='MilvusDeepResearchBot (<insert your email>)', language='en')
page_py = wiki_wiki.page(page_title)

text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=200)
docs = text_splitter.create_documents([page_py.text])

vectorstore = Milvus.from_documents(  # or Zilliz.from_documents
    documents=docs,
    embedding=embeddings,
    connection_args={
        "uri": "./milvus_demo.db",
    },
    drop_old=True, 
    index_params={
        "metric_type": "COSINE",
        "index_type": "FLAT",  
        "params": {},
    },
)

Menganalisis

Agen kembali ke pertanyaan-pertanyaannya dan menjawabnya berdasarkan informasi yang relevan di dalam dokumen. Kami akan meninggalkan alur kerja analisis/refleksi multi-langkah untuk pekerjaan di masa depan, serta pemikiran kritis tentang kredibilitas dan bias sumber kami.

Berikut ini adalah cuplikan kode yang mengilustrasikan pembuatan RAG dengan LangChain dan menjawab sub-pertanyaan kita secara terpisah.

# Define the RAG chain for response generation
rag_chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

# Prompt the RAG for each question
answers = {}
total = len(leaves(breakdown))

pbar = tqdm(total=total)
for k, v in breakdown.items():
    if v == []:
        print(k)
        answers[k] = rag_chain.invoke(k).split('</think>')[-1].strip()
        pbar.update(1)
    else:
        for q in v:
            print(q)
            answers[q] = rag_chain.invoke(q).split('</think>')[-1].strip()
            pbar.update(1)

Mensintesis

Setelah agen melakukan penelitian, ia membuat garis besar terstruktur, atau lebih tepatnya, kerangka, dari temuannya untuk dirangkum dalam laporan. Kemudian melengkapi setiap bagian, mengisinya dengan judul bagian dan konten yang sesuai. Kami meninggalkan alur kerja yang lebih canggih dengan refleksi, penyusunan ulang, dan penulisan ulang untuk iterasi berikutnya. Bagian agen ini melibatkan perencanaan, penggunaan alat, dan memori.

Lihat buku catatan yang menyertai untuk kode lengkap dan file laporan yang disimpan sebagai contoh keluaran.

Hasil

Pertanyaan kami untuk pengujian adalah "Bagaimana The Simpsons berubah dari waktu ke waktu?" dan sumber datanya adalah artikel Wikipedia untuk "The Simpsons". Berikut ini adalah salah satu bagian dari laporan yang dihasilkan:

Ringkasan: Apa yang telah kami buat dan apa yang selanjutnya

Hanya dalam beberapa jam, kami telah merancang alur kerja agen dasar yang dapat menalar, merencanakan, dan mengambil informasi dari Wikipedia untuk menghasilkan laporan penelitian yang terstruktur. Meskipun prototipe ini masih jauh dari Deep Research milik OpenAI, prototipe ini menunjukkan kekuatan alat sumber terbuka seperti Milvus, DeepSeek, dan LangChain dalam membangun agen penelitian otonom.

Tentu saja, ada banyak ruang untuk perbaikan. Iterasi di masa depan bisa saja terjadi:

  • Memperluas di luar Wikipedia untuk mencari berbagai sumber secara dinamis

  • Memperkenalkan pelacakan mundur dan refleksi untuk menyempurnakan tanggapan

  • Mengoptimalkan alur eksekusi berdasarkan penalaran agen itu sendiri

Sumber terbuka memberi kita fleksibilitas dan kontrol yang tidak dimiliki oleh sumber tertutup. Baik untuk penelitian akademis, sintesis konten, atau bantuan bertenaga AI, membangun agen penelitian kita sendiri membuka berbagai kemungkinan yang menarik. Nantikan tulisan berikutnya di mana kita akan mengeksplorasi penambahan pengambilan web secara real-time, penalaran multi-langkah, dan alur eksekusi bersyarat!

Sumber daya

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Terus Baca