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

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

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

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

ภาพรวม

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

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

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

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

ตั้งค่าโครงการ

วิธีการเหล่านี้จะแนะนำการตั้งค่าโปรเจ็กต์ Agent เอกสารเพื่อการพัฒนาและการทดสอบ ขั้นตอนทั่วไปคือการติดตั้งซอฟต์แวร์ที่จำเป็นบางอย่าง การตั้งค่าตัวแปรสภาพแวดล้อม 2-3 รายการ การโคลนโปรเจ็กต์จากที่เก็บโค้ด และเรียกใช้การติดตั้งการกำหนดค่า โปรเจ็กต์โค้ดใช้ 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 อื่นๆ ได้หากขยายโปรเจ็กต์

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

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

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

  1. รับคีย์ Google Gemini API และคัดลอกสตริงคีย์
  2. ตั้งค่าคีย์ API เป็นตัวแปรสภาพแวดล้อม ในโฮสต์ Linux ให้ใช้ คำสั่งต่อไปนี้
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. แก้ไขปัญหาที่ทราบสำหรับบทกวี Python โดยการตั้งค่าพารามิเตอร์ 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. สร้างไดเรกทอรีสำหรับเนื้อหาที่ต้องการให้ Agent AI ค้นหา
    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
    

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

เพื่อให้ Agent การค้นหาค้นหาเนื้อหาที่เกี่ยวข้องกับคำถามของผู้ใช้ได้อย่างมีประสิทธิภาพ คุณต้องสร้างฐานข้อมูลเวกเตอร์ที่แสดงเนื้อหาของคุณ ระบบจะสร้างเวกเตอร์โดยใช้ฟังก์ชันโมเดล Generative AI ที่เรียกว่าการฝังข้อความ การฝังข้อความเป็นการนำเสนอเนื้อหาข้อความ ในรูปแบบตัวเลข โดยจะประมาณความหมายในเชิงความหมายของข้อความเป็นชุดตัวเลข การแสดงข้อมูลแบบตัวเลขช่วยให้ระบบนำคำถามของผู้ใช้มาประมาณค่าความหมายโดยใช้ฟังก์ชันการฝังข้อความเดียวกัน จากนั้นค้นหาข้อมูลที่เกี่ยวข้องในการคำนวณทางคณิตศาสตร์ โดยใช้อัลกอริทึมเพื่อนบ้านที่อยู่ใกล้ที่สุด (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. แยกเนื้อหาต้นทางของ Markdown โดยเรียกใช้คำสั่ง agent chunk:
    agent chunk
    

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

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

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

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

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

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

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

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

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

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

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

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

ทดสอบแอป

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

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

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

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

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

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

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

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

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

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