สร้างการค้นหาเนื้อหาโดย AI ด้วย Agent เอกสาร

การค้นหาข้อมูลเป็นหนึ่งในวิธีการใช้งานที่นิยมใช้กันมากที่สุด โมเดล Generative AI (AI) อย่างปัญญาประดิษฐ์ การสร้างอินเทอร์เฟซการค้นหาแบบสนทนา สำหรับเนื้อหาโดยใช้ AI ช่วยให้ผู้ใช้สามารถถามคำถามที่เฉพาะเจาะจงและ โดยตรง

บทแนะนำนี้จะแสดงวิธีสร้างการค้นหาแบบสนทนาที่ทำงานด้วยระบบ AI สำหรับเนื้อหาของคุณ โดยจะอิงตาม Google Documents, โปรเจ็กต์โอเพนซอร์สที่ใช้ Google Gemini API ในการสร้างการสนทนา บนอินเทอร์เฟซการค้นหา โดยไม่ต้องฝึกโมเดล AI ใหม่หรือปรับแต่งโมเดลด้วย โมเดล Gemini ซึ่งหมายความว่าคุณสามารถ สร้างความสามารถในการค้นหานี้ได้อย่างรวดเร็ว เพื่อใช้กับชุดเนื้อหาขนาดเล็กและขนาดใหญ่

หากต้องการดูวิดีโอภาพรวมของโปรเจ็กต์และวิธีต่อยอดโปรเจ็กต์ รวมถึงข้อมูลเชิงลึก จากผู้ที่สร้างสรรค์ผลิตภัณฑ์ โปรดดูที่ การค้นหาเนื้อหาด้วย AI | สร้างด้วย AI ของ Google หรือคุณจะเริ่มขยายเวลาโปรเจ็กต์ได้โดยทำตามวิธีการ ที่ด้านล่าง

ภาพรวม

โครงการ Agent ของ Google เอกสารจะมีอินเทอร์เฟซการค้นหาแบบสนทนาสำหรับ เนื้อหาที่ได้รับการสนับสนุนโดย Google Gemini API และโมเดล Generative ผู้ใช้สามารถ ถามคำถามอย่างละเอียดในรูปแบบการสนทนาและรับคำตอบอย่างละเอียด ตามชุดเนื้อหาเฉพาะ เบื้องหลังการทำงาน Docs Agent ได้นำ และค้นหากับฐานข้อมูลเวกเตอร์ของเนื้อหา และสร้าง พรอมต์โดยละเอียดสำหรับโมเดล Generative รวมถึงตัวอย่างข้อความที่เกี่ยวข้อง โมเดล Generative จะสร้างคำตอบสำหรับคำถามและ Agent เอกสาร จัดรูปแบบคำตอบและนำเสนอต่อผู้ใช้

แผนภาพการทำงานของ Google เอกสาร รูปที่ 1 แผนภาพฟังก์ชันการทำงานของแอปโปรเจ็กต์ Agent เอกสาร

กุญแจสำคัญที่จะทำให้ Agent เอกสารสามารถตอบคำถามเกี่ยวกับเนื้อหาของคุณคือ สร้างฐานข้อมูลเวกเตอร์ของเนื้อหานั้น การแยกเนื้อหาออกเป็น กลุ่มข้อความเชิงตรรกะและสร้างเวกเตอร์สำหรับแต่ละข้อความ เวกเตอร์เหล่านี้คือ การนำเสนอข้อมูลที่เป็นตัวเลขในแต่ละกลุ่มและสร้างขึ้นด้วย ฟังก์ชันการฝังข้อความของ AI จากโมเดล Generative ของ Google

เมื่อผู้ใช้ถามคำถาม ตัวแทนเอกสารจะใช้การฝังข้อความเดียวกัน เพื่อสร้างการแสดงตัวเลขของคำถามนั้น และใช้ เพื่อค้นหาฐานข้อมูลเวกเตอร์และค้นหาเนื้อหาที่เกี่ยวข้อง ได้รับความนิยมสูงสุด และเพิ่มข้อมูลนั้นในพรอมต์สำหรับโมเดล Generative AI โมเดลจะนำคำถามและข้อมูลบริบทเพิ่มเติมมาสร้าง คำตอบ

การตั้งค่าโปรเจ็กต์

คำแนะนำเหล่านี้จะอธิบายวิธีตั้งค่าโปรเจ็กต์ Agent เอกสารสำหรับ การพัฒนาและการทดสอบ ขั้นตอนทั่วไปจะติดตั้งสิ่งที่ต้องดำเนินการก่อน ซอฟต์แวร์ โดยตั้งค่าตัวแปรสภาพแวดล้อมบางรายการ รวมทั้งโคลนโปรเจ็กต์จากโค้ด ที่เก็บ และเรียกใช้การติดตั้งการกำหนดค่า โปรเจ็กต์โค้ดใช้ Python Poetry เพื่อจัดการแพ็กเกจและ สภาพแวดล้อมรันไทม์ของ Python

ติดตั้งสิ่งที่ต้องมีก่อน

โปรเจ็กต์ Agent เอกสารใช้ Python 3 และ Python Poetry เพื่อจัดการแพ็กเกจและ เรียกใช้แอปพลิเคชัน คำแนะนำในการติดตั้งต่อไปนี้มีไว้สำหรับ Linux เครื่องโฮสต์

วิธีติดตั้งซอฟต์แวร์ที่จำเป็น

  1. ติดตั้ง Python 3 และแพ็กเกจสภาพแวดล้อมเสมือน venv สำหรับ Python
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. ติดตั้ง Python Poetry เพื่อจัดการทรัพยากร Dependency และการสร้างแพ็กเกจสำหรับ โปรเจ็กต์
    curl -sSL https://install.python-poetry.org | python3 -
    

คุณสามารถใช้ Python Poetry เพื่อเพิ่มไลบรารี Python เพิ่มเติมหากคุณขยาย

ตั้งค่าตัวแปรสภาพแวดล้อม

ตั้งค่าตัวแปรสภาพแวดล้อมบางรายการที่จำเป็นต่อการอนุญาตโค้ด Agent ของเอกสาร โปรเจ็กต์ที่เรียกใช้ รวมถึงคีย์ Google Gemini API และ Python การตั้งค่าบทกวี คุณอาจต้องการเพิ่มตัวแปรเหล่านี้ลงในไฟล์ $HOME/.bashrc หากคุณใช้ Linux เพื่อกำหนดการตั้งค่าเริ่มต้นสำหรับเทอร์มินัล เซสชัน

วิธีตั้งค่าตัวแปรสภาพแวดล้อม

  1. รับคีย์ Google Gemini API แล้วคัดลอกสตริงคีย์
  2. ตั้งค่าคีย์ API เป็นตัวแปรสภาพแวดล้อม ในโฮสต์ Linux ให้ใช้ คำสั่งต่อไปนี้
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. แก้ปัญหาที่รู้จัก ปัญหา สำหรับ Python Poetry โดยการตั้งค่าพารามิเตอร์ PYTHON_KEYRING_BACKEND ใช้คำสั่งต่อไปนี้ในโฮสต์ Linux
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

โคลนและกำหนดค่าโปรเจ็กต์

ดาวน์โหลดรหัสโปรเจ็กต์และใช้คำสั่งการติดตั้ง Poetry เพื่อดาวน์โหลด ทรัพยากร Dependency ที่จำเป็นและกำหนดค่าโปรเจ็กต์ คุณต้องมี git ซอฟต์แวร์ควบคุมแหล่งที่มาเพื่อดึงข้อมูล ซอร์สโค้ดของโครงการ ภายนอก วิธีดาวน์โหลดและกำหนดค่ารหัสโปรเจ็กต์

  1. โคลนที่เก็บ Git โดยใช้คำสั่งต่อไปนี้
    git clone https://github.com/google/generative-ai-docs
    
  2. (ไม่บังคับ) กำหนดค่าที่เก็บ Git ในเครื่องเพื่อใช้การชำระเงินแบบกระจัดกระจาย เพื่อให้คุณมีเพียงไฟล์สำหรับโปรเจ็กต์ Agent เอกสาร
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. ย้ายไปที่ไดเรกทอรีรากของโปรเจ็กต์ docs-agent
    cd examples/gemini/python/docs-agent/
    
  4. เรียกใช้คำสั่งติดตั้ง Poetry เพื่อดาวน์โหลดทรัพยากร Dependency และกำหนดค่า โปรเจ็กต์:
    poetry install
    

เตรียมเนื้อหา

โครงการ Agent เอกสารได้รับการออกแบบมาให้ทำงานกับเนื้อหาข้อความ และรวมถึง เครื่องมือในการทำงานกับเว็บไซต์ที่ใช้มาร์กดาวน์เป็นรูปแบบแหล่งที่มาโดยเฉพาะ ถ้าคุณทำงานกับเนื้อหาเว็บไซต์ คุณควรเก็บ (หรือทำซ้ำ) โครงสร้างไดเรกทอรีของเว็บไซต์ที่แสดงผลเพื่อให้งานการประมวลผลเนื้อหาทำงานได้ เพื่อแมปและสร้างลิงก์ไปยังเนื้อหาดังกล่าว

คุณอาจต้องทำความสะอาดไฟล์ ขึ้นอยู่กับรูปแบบและรายละเอียดของเนื้อหา เนื้อหาเพื่อลบข้อมูลที่ไม่เป็นสาธารณะ บันทึกภายใน หรือข้อมูลอื่นๆ ที่คุณไม่ต้องการให้มีการค้นหา คุณควรคงการจัดรูปแบบพื้นฐานไว้ เป็นชื่อและส่วนหัว ซึ่งจะช่วยสร้างการแยกข้อความเชิงตรรกะหรือแบ่งส่วนในส่วน ขั้นตอนการประมวลเนื้อหา

วิธีเตรียมเนื้อหาสำหรับการประมวลผล

  1. สร้างไดเรกทอรีสำหรับเนื้อหาที่ต้องการให้ AI Agent ค้นหา
    mkdir docs-agent/content/
    
  2. คัดลอกเนื้อหาลงในไดเรกทอรี docs-agent/content/ หาก เป็นเว็บไซต์ รักษา (หรือทำซ้ำ) โครงสร้างไดเรกทอรีของ เว็บไซต์ที่แสดง
  3. ล้างหรือแก้ไขเนื้อหาตามที่จำเป็นเพื่อนำข้อมูลที่ไม่เผยแพร่ออก หรือ ข้อมูลอื่นๆ ที่คุณไม่ต้องการให้ปรากฏในการค้นหา

ใช้เอกสาร Flutter เพื่อทำการทดสอบ

หากต้องการชุดเนื้อหาสำหรับการทดสอบ Agent เอกสาร คุณก็ใช้ Flutter ได้ เอกสารสำหรับนักพัฒนาซอฟต์แวร์เพื่อทำการทดสอบ

วิธีรับเอกสารสำหรับนักพัฒนาซอฟต์แวร์ Flutter

  1. ย้ายไปที่ไดเรกทอรีเนื้อหาสำหรับเนื้อหาที่ต้องการให้ Agent AI ทำ ค้นหา
    cd docs-agent/content/
    
  2. โคลนเอกสาร Flutter ลงในไดเรกทอรี docs-agent/content/
    git clone --recurse-submodules https://github.com/flutter/website.git
    

ประมวลผลเนื้อหา

เพื่อให้ตัวแทนการค้นหาสามารถค้นหาเนื้อหาที่เกี่ยวข้องกับ ผู้ใช้ คุณต้องสร้างฐานข้อมูลของเวกเตอร์ที่แสดงถึง เนื้อหา เวกเตอร์จะสร้างขึ้นโดยใช้ฟังก์ชันโมเดลแบบ AI ที่เรียกว่า การฝังข้อความ การฝังข้อความคือการแสดงข้อความในรูปแบบตัวเลข เนื้อหา โดยจะประมาณความหมายเชิงความหมายของข้อความเป็นชุด ตัวเลข การนำเสนอข้อมูลในรูปแบบตัวเลขช่วยให้ระบบสามารถ คำถามของผู้ใช้ จะประมาณความหมายโดยใช้การฝังข้อความเดียวกัน แล้วค้นหาข้อมูลที่เกี่ยวข้องเป็นการคำนวณทางคณิตศาสตร์โดยใช้ เพื่อนบ้านที่อยู่ใกล้ที่สุด k (k-NN)

เนื้อหาข้อความแบบแยก

จำนวนข้อความที่เวกเตอร์การฝังข้อความสามารถแสดงได้อย่างมีประสิทธิภาพคือ แบบจำกัด โครงการนี้จำกัดข้อความที่แสดงในเวกเตอร์ให้ไม่เกิน 3,000 อักขระ ซึ่งหมายความว่าคุณต้องแบ่ง เนื้อหาออกเป็นส่วนย่อยๆ เพื่อให้เนื้อหาอยู่ภายใต้ จำนวนอักขระสูงสุด ส่วนนี้จะอธิบายวิธีใช้สคริปต์ที่มาพร้อมกับ โปรเจ็กต์ Agent เอกสารเพื่อแบ่งไฟล์มาร์กดาวน์เป็นกลุ่มข้อความเล็กๆ สำหรับเคล็ดลับเกี่ยวกับ การทำงานกับเนื้อหารูปแบบอื่นๆ โปรดดู จัดการรูปแบบอื่นๆ

วิธีแยกเนื้อหาสำหรับรูปแบบมาร์กดาวน์

  1. กำหนดค่าพารามิเตอร์อินพุตสำหรับสคริปต์การประมวลผลโดยแก้ไข docs-agent/config.yaml ไฟล์ ตัวอย่างนี้กำหนดเป้าหมายเป็นกลุ่มย่อย ในเอกสาร Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. บันทึกการเปลี่ยนแปลงลงในไฟล์การกำหนดค่านี้
  3. ไปที่ไดเรกทอรีโปรเจ็กต์ docs-agent:
    cd docs-agent/
    
  4. แยกเนื้อหาต้นทางมาร์กดาวน์โดยเรียกใช้คำสั่ง agent chunk ดังนี้
    agent chunk
    

สคริปต์จะประมวลผลเนื้อหาอินพุตและสร้างไฟล์ข้อความเอาต์พุตใน ไดเรกทอรี docs-agent/data แยกข้อความตามชื่อ ส่วนหัว และ ย่อหน้าที่เกี่ยวข้อง การประมวลผลอาจใช้เวลาสักครู่ ทั้งนี้ขึ้นอยู่กับขนาด เนื้อหา

สร้างเวกเตอร์การฝังข้อความ

หลังจากแบ่งเนื้อหาออกเป็นส่วนๆ ที่มีขนาดเหมาะสมและมีความหมายแล้ว คุณก็ สามารถสร้างฐานข้อมูลเวกเตอร์ที่มีเนื้อหาของคุณโดยใช้การฝังข้อความ โปรเจ็กต์ Agent เอกสารจะใช้Chroma ฐานข้อมูลเวกเตอร์เพื่อจัดเก็บเวกเตอร์ที่ฝังข้อความ วิธีการเหล่านี้ครอบคลุมวิธีการ เพื่อใช้สคริปต์ Agent เอกสารเพื่อสร้างฐานข้อมูลเวกเตอร์ที่มีการแยก เนื้อหา

หากต้องการสร้างการฝังข้อความและป้อนข้อมูลในฐานข้อมูลเวกเตอร์ ให้ทำดังนี้

  1. ไปที่ไดเรกทอรีโปรเจ็กต์ docs-agent:
    cd docs-agent/
    
  2. สร้างฐานข้อมูลเวกเตอร์ด้วยเนื้อหาของคุณโดยใช้ agent populate คำสั่ง:
    agent populate
    

สคริปต์นี้ใช้ Google Gemini API เพื่อสร้าง การฝังข้อความ เวกเตอร์ แล้วบันทึกเอาต์พุตลงในฐานข้อมูลเวกเตอร์ การประมวลผลอาจใช้เวลา ในบางครั้ง ทั้งนี้ขึ้นอยู่กับขนาดของเนื้อหา

จัดการรูปแบบอื่นๆ

โครงการ Docs Agent ได้รับการออกแบบมาให้ทำงานกับเนื้อหาของเว็บไซต์ใน Markdown ผู้เขียนโปรเจ็กต์ได้สร้างสคริปต์ตัวแปลงข้อมูล 2-3 สคริปต์เพื่อสร้าง เนื้อหาประเภทอื่นๆ ลงในรูปแบบมาร์กดาวน์ เช่น Google เอกสาร, Portable รูปแบบเอกสาร (PDF) และ Gmail สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ให้ดูที่ docs-agent/apps_script ของที่เก็บโค้ด

แปลงรูปแบบเนื้อหาอื่นๆ

คุณสามารถใช้รูปแบบเนื้อหาอื่นๆ กับโครงการได้ แต่ วิธีการเพิ่มเติมจะต้องสร้างขึ้นโดยคุณหรือสมาชิกคนอื่นๆ ในชุมชน ตรวจสอบที่เก็บโค้ด ปัญหาและ คำขอแบบพุล สำหรับผู้ที่สร้างโซลูชันคล้ายคลึงกัน

โค้ดคีย์ที่คุณต้องสร้างเพื่อรองรับรูปแบบเนื้อหาอื่นๆ คือตัวแยก สคริปต์ เช่น files_to_plain_text.py สคริปต์ มุ่งสร้างสคริปต์หรือโปรแกรมที่สร้างผลลัพธ์ที่คล้ายกับสิ่งนี้ สคริปต์ โปรดทราบว่าเอาต์พุตข้อความสุดท้ายควรมีการจัดรูปแบบน้อยที่สุดและ ข้อมูลที่ไม่จำเป็น หากคุณใช้รูปแบบเนื้อหาอย่าง HTML หรือ JSON อย่าลืมตัดการจัดรูปแบบที่ไม่ใช่ ข้อมูลออกไปให้น้อยที่สุด (แท็ก, Scripting, CSS) มากที่สุดเท่าที่จะทำได้ เพื่อไม่ให้เกิดการบิดเบือนค่าของข้อความ ที่คุณสร้างจากเนื้อหาเหล่านั้น

เมื่อคุณสร้างสคริปต์ตัวแยกสำหรับรูปแบบเนื้อหาแล้ว คุณควรจะสามารถ เรียกใช้ populate_vector_database.py เพื่อสร้างฐานข้อมูลเวกเตอร์ของคุณ ดูข้อมูลเพิ่มเติมเกี่ยวกับการประมวลผลข้อมูล ไฟล์ที่จะใช้กับ Google เอกสาร โปรดดู Agent เอกสาร Readme ที่ประมวลผลล่วงหน้า

ทดสอบแอป

เมื่อคุณเติมข้อมูลในฐานข้อมูลเวกเตอร์เรียบร้อยแล้ว โปรเจ็กต์ก็พร้อมแล้ว เพื่อการทดสอบ โปรเจ็กต์นี้มีฟังก์ชันแพ็กเกจเพื่อให้คุณเรียกใช้ ในเครื่อง

วิธีเรียกใช้และทดสอบเว็บอินเทอร์เฟซของโปรเจ็กต์

  1. ไปที่ไดเรกทอรีโปรเจ็กต์ docs-agent:
    cd docs-agent/
    
  2. เรียกใช้สคริปต์การเรียกใช้เว็บแอปพลิเคชัน:
    agent chatbot
    
  3. ไปที่ที่อยู่เว็บ URL ที่แสดงใน เอาต์พุตของสคริปต์การเรียกใช้และทดสอบแอปพลิเคชัน
    * Running on http://your-hostname-here:5000
    

รูปแบบการนำไปใช้

Gemini API มีเครื่องมือเขียนโปรแกรมที่สามารถแทนที่ส่วนประกอบของ การใช้งาน Agent เอกสาร โดยเฉพาะ: การดึงข้อมูลความหมายและการระบุแหล่งที่มา ตัวแปรโมเดล Gemini ในการตอบคำถาม (AQA) คุณสามารถใช้ฟังก์ชัน การดึงข้อมูลเชิงความหมาย เพื่อแทนที่ฐานข้อมูลเวกเตอร์ที่แยกกัน ฟีเจอร์การดึงข้อมูลความหมาย ช่วยให้คุณสร้างการฝังสำหรับเนื้อหา และจัดเก็บเนื้อหานั้นได้ AQA โมเดล Gemini ได้รับการปรับแต่งมาเพื่อ ตอบคำถามด้วยเนื้อหาต้นฉบับที่มีอยู่ในพรอมต์ คุณใช้ความหมาย ดึงข้อมูลร่วมกับโมเดล AQA เพื่อ ตอบคำถาม เกี่ยวกับเนื้อหาของคุณที่อยู่ใน Gemini API

Agent เอกสารมีตัวเลือกการกำหนดค่าเพื่อใช้ความหมาย ฟีเจอร์ Retrieval API, โมเดล AQA Gemini ดังกล่าว หรือทั้ง 2 อย่าง สำหรับข้อมูลเพิ่มเติม โปรดดู เวลา Readme Agent ของเอกสาร

แหล่งข้อมูลเพิ่มเติม

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโครงการ Agent เอกสาร โปรดดูที่ ที่เก็บโค้ด หากคุณต้องการความช่วยเหลือในการสร้างแอปพลิเคชันหรือกำลังมองหานักพัฒนาซอฟต์แวร์ โปรดดู Discord ในชุมชน Google Developers เซิร์ฟเวอร์

แอปพลิเคชันเวอร์ชันที่ใช้งานจริง

ถ้าคุณวางแผนที่จะทำให้ Agent เอกสารใช้งานได้สำหรับผู้อ่านจำนวนมาก โปรดทราบว่าการใช้ Google Gemini API อาจมีการจำกัดอัตราคำขอ ข้อจำกัดการใช้งาน หากคุณกำลังคิดจะสร้างแอปพลิเคชันเวอร์ชันที่ใช้งานจริงด้วย Gemini API เช่น ตัวแทนเอกสาร ชำระเงิน Vertex AI ของ Google Cloud เพื่อเพิ่มความสามารถในการปรับขนาดและความเสถียรของแอป