การค้นหาข้อมูลเป็นหนึ่งในการใช้งานโมเดล Generative ของปัญญาประดิษฐ์ (AI) ที่พบบ่อยที่สุด การสร้างอินเทอร์เฟซการค้นหาแบบสนทนาสำหรับเนื้อหาโดยใช้ AI จะช่วยให้ผู้ใช้สามารถถามคำถามที่เฉพาะเจาะจงและรับคำตอบโดยตรง
บทแนะนำนี้จะแสดงวิธีสร้างอินเทอร์เฟซการค้นหาแบบสนทนาที่ทำงานด้วยระบบ AI สำหรับเนื้อหาของคุณ โดยอิงตาม Docs Agent ซึ่งเป็นโปรเจ็กต์โอเพนซอร์สที่ใช้ Google Gemini API เพื่อสร้างอินเทอร์เฟซการค้นหาแบบสนทนาโดยไม่ต้องฝึกโมเดล AI ใหม่หรือปรับแต่งโมเดลด้วยโมเดล Gemini ซึ่งหมายความว่าคุณจะสร้างความสามารถในการค้นหานี้ได้อย่างรวดเร็วและใช้กับชุดเนื้อหาขนาดเล็กและขนาดใหญ่ได้
ดูภาพรวมของโปรเจ็กต์และวิธีขยายการใช้งาน รวมถึงข้อมูลเชิงลึกจากทีมที่สร้างโปรเจ็กต์ได้ที่การค้นหาเนื้อหาด้วย AI | สร้างด้วย AI ของ Google หรือจะเริ่มต้นขยายโปรเจ็กต์โดยทำตามวิธีการด้านล่างก็ได้
ภาพรวม
โปรเจ็กต์ตัวแทนของเอกสารมีอินเทอร์เฟซการค้นหาแบบสนทนาสําหรับชุดเนื้อหาที่เฉพาะเจาะจง ซึ่งรองรับโดย Google Gemini API และโมเดล Generative ผู้ใช้สามารถถามคำถามแบบละเอียดในลักษณะการสนทนาและรับคำตอบแบบละเอียดโดยอิงตามชุดเนื้อหาที่เฉพาะเจาะจง เบื้องหลังคือ Agent ของเอกสารจะนำคำถามไปค้นหาในฐานข้อมูลเวกเตอร์ของเนื้อหา และสร้างพรอมต์แบบละเอียดสำหรับโมเดล Generative รวมถึงตัวอย่างข้อความที่เกี่ยวข้อง โมเดล Generative จะสร้างคำตอบสำหรับคำถาม และตัวแทนของ Google เอกสารจะจัดรูปแบบคำตอบและแสดงต่อผู้ใช้
รูปที่ 1 แผนภาพการทำงานของแอปโปรเจ็กต์ของตัวแทนเอกสาร
การสร้างฐานข้อมูลเวกเตอร์ของเนื้อหาเป็นกุญแจสำคัญที่จะทำให้ตัวแทนของเอกสารสามารถตอบคำถามเกี่ยวกับเนื้อหาของคุณได้ คุณแยกเนื้อหาออกเป็นกลุ่มข้อความที่สื่อความหมายและสร้างเวกเตอร์สำหรับแต่ละกลุ่ม เวกเตอร์เหล่านี้เป็นการแสดงข้อมูลที่เป็นตัวเลขในแต่ละกลุ่ม และสร้างขึ้นด้วยฟังก์ชัน การฝังข้อความ AI จากโมเดล Generative ของ Google
เมื่อผู้ใช้ถามคำถาม ตัวแทนของ Google เอกสารจะใช้ฟังก์ชันการฝังข้อความเดียวกันเพื่อสร้างการนำเสนอคำถามที่เป็นตัวเลข และจะใช้ค่านั้นเพื่อค้นหาฐานข้อมูลเวกเตอร์และค้นหาเนื้อหาที่เกี่ยวข้อง โดยระบบจะนำผลการค้นหาอันดับต้นๆ มาเพิ่มลงในพรอมต์สําหรับโมเดล Generative โมเดล AI จะนําคําถามและข้อมูลบริบทเพิ่มเติมมาสร้างคําตอบ
การตั้งค่าโปรเจ็กต์
วิธีการเหล่านี้จะแนะนำการตั้งค่าโปรเจ็กต์ตัวแทนเอกสารสําหรับการพัฒนาและการทดสอบ ขั้นตอนทั่วไปคือการติดตั้งซอฟต์แวร์ที่จำเป็นบางอย่าง การตั้งค่าตัวแปรสภาพแวดล้อม 2-3 รายการ การโคลนโปรเจ็กต์จากที่เก็บโค้ด และเรียกใช้การติดตั้งการกําหนดค่า โปรเจ็กต์โค้ดใช้ Python Poetry เพื่อจัดการแพ็กเกจและสภาพแวดล้อมรันไทม์ Python
ติดตั้งข้อกําหนดเบื้องต้น
โปรเจ็กต์ Docs Agent ใช้ Python 3 และ Python Poetry เพื่อจัดการแพ็กเกจและเรียกใช้แอปพลิเคชัน วิธีการติดตั้งต่อไปนี้มีไว้สำหรับเครื่องโฮสต์ Linux
วิธีติดตั้งซอฟต์แวร์ที่จำเป็น
- ติดตั้ง Python 3 และ
venv
แพ็กเกจสภาพแวดล้อมเสมือนสำหรับ Python
sudo apt update sudo apt install git pip python3-venv
- ติดตั้ง Python Poetry เพื่อจัดการการอ้างอิงและการจัดแพ็กเกจสําหรับโปรเจ็กต์
curl -sSL https://install.python-poetry.org | python3 -
คุณสามารถใช้ Python Poetry เพื่อเพิ่มไลบรารี Python อื่นๆ ได้หากขยายโปรเจ็กต์
ตั้งค่าตัวแปรสภาพแวดล้อม
ตั้งค่าตัวแปรสภาพแวดล้อม 2-3 รายการที่จําเป็นเพื่อให้โปรเจ็กต์โค้ดของตัวแทนของ Google ทำงานได้ ซึ่งรวมถึงการตั้งค่า คีย์ Google Gemini API และ Python Poetry คุณอาจต้องเพิ่มตัวแปรเหล่านี้ลงในไฟล์ $HOME/.bashrc
หากใช้ Linux เพื่อให้เป็นการตั้งค่าเริ่มต้นสำหรับเซสชันเทอร์มินัล
วิธีตั้งค่าตัวแปรสภาพแวดล้อม
- รับคีย์ Google Gemini API และคัดลอกสตริงคีย์
- ตั้งค่าคีย์ API เป็นตัวแปรสภาพแวดล้อม ในโฮสต์ Linux ให้ใช้คำสั่งต่อไปนี้
export API_KEY=<YOUR_API_KEY_HERE>
- แก้ไขปัญหาที่ทราบสำหรับ Python Poetry ด้วยการตั้งค่าพารามิเตอร์
PYTHON_KEYRING_BACKEND
ในโฮสต์ Linux ให้ใช้คำสั่งต่อไปนี้
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
โคลนและกำหนดค่าโปรเจ็กต์
ดาวน์โหลดโค้ดโปรเจ็กต์และใช้คำสั่งการติดตั้ง Poetry เพื่อดาวน์โหลดข้อกำหนดที่จำเป็นและกำหนดค่าโปรเจ็กต์ คุณต้องมีซอฟต์แวร์ควบคุมแหล่งที่มา git เพื่อดึงข้อมูลซอร์สโค้ดของโปรเจ็กต์จากภายนอก หากต้องการดาวน์โหลดและกําหนดค่าโค้ดโปรเจ็กต์ ให้ทําดังนี้
- โคลนที่เก็บ Git โดยใช้คําสั่งต่อไปนี้
git clone https://github.com/google/generative-ai-docs
- (ไม่บังคับ) กำหนดค่าที่เก็บ Git ในพื้นที่ให้ใช้การตรวจสอบแบบไม่สมบูรณ์เพื่อให้คุณมีเฉพาะไฟล์สำหรับโปรเจ็กต์ตัวแทนของเอกสาร
cd generative-ai-docs/ git sparse-checkout init --cone git sparse-checkout set examples/gemini/python/docs-agent/
- ย้ายไปที่ไดเรกทอรีรากของโปรเจ็กต์
docs-agent
cd examples/gemini/python/docs-agent/
- เรียกใช้คำสั่งติดตั้ง Poetry เพื่อดาวน์โหลดส่วนที่ใช้อ้างอิงและกำหนดค่าโปรเจ็กต์
poetry install
เตรียมเนื้อหา
โปรเจ็กต์ตัวแทนของเอกสารออกแบบมาเพื่อทำงานกับเนื้อหาข้อความ และมีเครื่องมือที่ทำงานร่วมกับเว็บไซต์ที่ใช้มาร์กดาวน์เป็นรูปแบบแหล่งที่มาโดยเฉพาะ หากคุณกำลังจัดการกับเนื้อหาเว็บไซต์ คุณควรเก็บรักษา (หรือทำซ้ำ) โครงสร้างไดเรกทอรีของเว็บไซต์ที่แสดงเพื่อให้งานประมวลผลเนื้อหาจับคู่และสร้างลิงก์ไปยังเนื้อหานั้นได้
คุณอาจต้องทำความสะอาดเนื้อหาเพื่อนำข้อมูลที่ไม่เผยแพร่ต่อสาธารณะ โน้ตภายใน หรือข้อมูลอื่นๆ ที่ไม่ต้องการให้ค้นหาได้ออก ทั้งนี้ขึ้นอยู่กับรูปแบบและรายละเอียดของเนื้อหา คุณควรคงการจัดรูปแบบพื้นฐานไว้ เช่น ชื่อและหัวเรื่อง ซึ่งจะช่วยสร้างการแบ่งข้อความหรือกลุ่มข้อความที่สมเหตุสมผลในขั้นตอนการจัดการเนื้อหา
วิธีเตรียมเนื้อหาให้พร้อมสำหรับการประมวลผล
- สร้างไดเรกทอรีสำหรับเนื้อหาที่ต้องการให้ตัวแทน AI ค้นหา
mkdir docs-agent/content/
- คัดลอกเนื้อหาลงในไดเรกทอรี
docs-agent/content/
หากเนื้อหาเป็นเว็บไซต์ ให้เก็บรักษา (หรือทำซ้ำ) โครงสร้างไดเรกทอรีของเว็บไซต์ที่แสดง - ตรวจสอบหรือแก้ไขเนื้อหาตามที่จำเป็นเพื่อนำข้อมูลที่ไม่ใช่สาธารณะหรือข้อมูลอื่นๆ ที่ไม่ต้องการให้รวมอยู่ในผลการค้นหาออก
ใช้เอกสาร Flutter สำหรับการทดสอบ
หากต้องการชุดเนื้อหาสำหรับทดสอบ Docs Agent คุณสามารถใช้เอกสารสำหรับนักพัฒนาซอฟต์แวร์ Flutter ในการทดสอบ
วิธีดูเอกสารสำหรับนักพัฒนาแอป Flutter
- ไปที่ไดเรกทอรีเนื้อหาของเนื้อหาที่ต้องการให้ตัวแทน AI ค้นหา
cd docs-agent/content/
- โคลนเอกสาร Flutter ไปยังไดเรกทอรี
docs-agent/content/
git clone --recurse-submodules https://github.com/flutter/website.git
ประมวลผลเนื้อหา
คุณต้องสร้างฐานข้อมูลเวกเตอร์ที่แสดงถึงเนื้อหาของคุณเพื่อให้ตัวแทนการค้นหาค้นหาเนื้อหาที่เกี่ยวข้องกับคำถามของผู้ใช้ได้อย่างมีประสิทธิภาพ ระบบจะสร้างเวกเตอร์โดยใช้ฟังก์ชันโมเดล Generative AI ที่เรียกว่าการฝังข้อความ การฝังข้อความคือการนําเสนอเนื้อหาข้อความเป็นตัวเลข โดยประมาณความหมายเชิงอรรถศาสตร์ของข้อความเป็นชุดตัวเลข การนําเสนอข้อมูลเป็นตัวเลขช่วยให้ระบบนําคําถามของผู้ใช้ไปประมาณความหมายโดยใช้ฟังก์ชันการฝังข้อความเดียวกัน จากนั้นค้นหาข้อมูลที่เชื่อมโยงกันเป็นการคํานวณทางคณิตศาสตร์โดยใช้อัลกอริทึม K-Nearest Neighbors (K-NN)
แยกเนื้อหาข้อความ
จำนวนข้อความที่เวกเตอร์การฝังข้อความแสดงได้อย่างมีประสิทธิภาพมีจำกัด โปรเจ็กต์นี้จะจำกัดข้อความที่แสดงในเวกเตอร์ไว้ที่ไม่เกิน 3, 000 อักขระ ซึ่งหมายความว่าคุณต้องแบ่งเนื้อหาออกเป็นส่วนๆ ที่มีจำนวนอักขระไม่เกินจำนวนดังกล่าว ส่วนนี้จะอธิบายวิธีใช้สคริปต์ที่มาพร้อมกับโปรเจ็กต์ Docs Agent เพื่อแยกไฟล์ Markdown ออกเป็นกลุ่มข้อความเล็กๆ ดูเคล็ดลับเกี่ยวกับการทำงานกับเนื้อหารูปแบบอื่นๆ ได้ที่จัดการรูปแบบอื่นๆ
วิธีแยกเนื้อหารูปแบบ Markdown
- กำหนดค่าพารามิเตอร์อินพุตสำหรับสคริปต์การประมวลผลโดยการแก้ไขไฟล์
docs-agent/config.yaml
ตัวอย่างนี้กำหนดเป้าหมายไปยังเอกสาร Flutter บางส่วน
input: - path: "content/website/src/ui" url_prefix: "https://docs.flutter.dev/ui"
- บันทึกการเปลี่ยนแปลงในไฟล์การกําหนดค่านี้
- ไปที่ไดเรกทอรีโปรเจ็กต์
docs-agent
cd docs-agent/
- แยกเนื้อหาต้นฉบับมาร์กดาวน์โดยเรียกใช้คำสั่ง
agent chunk
:
agent chunk
สคริปต์จะประมวลผลเนื้อหาอินพุตและสร้างไฟล์ข้อความเอาต์พุตในไดเรกทอรี docs-agent/data
โดยแบ่งข้อความตามชื่อ หัวเรื่อง และย่อหน้าที่เกี่ยวข้อง การประมวลผลอาจใช้เวลาสักครู่ ทั้งนี้ขึ้นอยู่กับขนาดของเนื้อหา
สร้างเวกเตอร์การฝังข้อความ
หลังจากแยกเนื้อหาออกเป็นกลุ่มที่มีขนาดเหมาะสมและสื่อความหมายแล้ว คุณสามารถป้อนข้อมูลเนื้อหาลงในฐานข้อมูลเวกเตอร์ได้โดยใช้ฟังก์ชันการฝังข้อความ โปรเจ็กต์ตัวแทนของเอกสารใช้ฐานข้อมูลเวกเตอร์ Chroma เพื่อจัดเก็บเวกเตอร์การฝังข้อความ วิธีการเหล่านี้ครอบคลุมวิธีใช้สคริปต์ตัวแทนของเอกสารเพื่อป้อนข้อมูลฐานข้อมูลเวกเตอร์ด้วยเนื้อหาที่แยก
วิธีสร้างการฝังข้อความและป้อนข้อมูลลงในฐานข้อมูลเวกเตอร์
- ไปที่ไดเรกทอรีโปรเจ็กต์
docs-agent
cd docs-agent/
- ป้อนข้อมูลลงในฐานข้อมูลเวกเตอร์ด้วยเนื้อหาของคุณโดยใช้
agent populate
คำสั่ง
agent populate
สคริปต์นี้ใช้ Google Gemini API เพื่อสร้างเวกเตอร์การฝังข้อความ จากนั้นบันทึกเอาต์พุตลงในฐานข้อมูลเวกเตอร์ การประมวลผลอาจใช้เวลาสักครู่ ทั้งนี้ขึ้นอยู่กับขนาดของเนื้อหา
จัดการรูปแบบอื่นๆ
โปรเจ็กต์ตัวแทนเอกสารออกแบบมาเพื่อทำงานกับเนื้อหาเว็บไซต์ในรูปแบบ Markdown ผู้เขียนโปรเจ็กต์ได้สร้างสคริปต์ตัวแปลง 2-3 รายการเพื่อสร้างเนื้อหาประเภทอื่นๆ เป็นรูปแบบ Markdown ซึ่งรวมถึง Google เอกสาร, รูปแบบเอกสารพกพา (PDF) และ Gmail ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้เครื่องมือแปลงเหล่านี้ได้ที่ไดเรกทอรี docs-agent/apps_script ของที่เก็บโค้ด
แปลงเนื้อหารูปแบบอื่นๆ
คุณใช้รูปแบบเนื้อหาอื่นๆ กับโปรเจ็กต์ได้ แต่คุณหรือสมาชิกคนอื่นๆ ในชุมชนจะต้องสร้างวิธีการเพิ่มเติมเหล่านั้น ตรวจสอบที่เก็บโค้ดเพื่อดูปัญหาและคำขอดึงข้อมูลเพื่อหาผู้ที่สร้างโซลูชันที่คล้ายกัน
โค้ดหลักที่คุณต้องสร้างเพื่อรองรับรูปแบบเนื้อหาอื่นๆ คือสคริปต์ตัวแบ่ง เช่น สคริปต์ files_to_plain_text.py
มุ่งสร้างสคริปต์หรือโปรแกรมที่สร้างเอาต์พุตที่คล้ายกับสคริปต์นี้ โปรดทราบว่าเอาต์พุตข้อความสุดท้ายควรมีการจัดรูปแบบและข้อมูลที่ไม่เกี่ยวข้องน้อยที่สุด หากคุณใช้รูปแบบเนื้อหา เช่น HTML หรือ JSON ให้นําการจัดรูปแบบที่ไม่เกี่ยวข้องกับข้อมูล (แท็ก สคริปต์ CSS) ออกให้มากที่สุด เพื่อไม่ให้ค่าของข้อความที่ฝังซึ่งคุณสร้างจากรูปแบบดังกล่าวบิดเบือน
เมื่อสร้างสคริปต์ตัวแยกสำหรับรูปแบบเนื้อหาแล้ว คุณควรจะสามารถเรียกใช้สคริปต์ populate_vector_database.py
เพื่อป้อนข้อมูลลงในฐานข้อมูลเวกเตอร์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการประมวลผลไฟล์เพื่อใช้กับ Docs Agent ได้ที่อ่านก่อนประมวลผลของ Docs Agent
ทดสอบแอป
เมื่อป้อนข้อมูลในฐานข้อมูลเวกเตอร์เสร็จแล้ว โปรเจ็กต์จะพร้อมสำหรับการทดสอบ โปรเจ็กต์มีฟังก์ชันการแพ็กเกจเพื่อให้คุณเรียกใช้โปรเจ็กต์ในเครื่องได้
วิธีเรียกใช้และทดสอบอินเทอร์เฟซเว็บของโปรเจ็กต์
- ไปที่ไดเรกทอรีโปรเจ็กต์
docs-agent
cd docs-agent/
- เรียกใช้สคริปต์เปิดเว็บแอปพลิเคชัน
agent chatbot
- ใช้เว็บเบราว์เซอร์เพื่อไปยังที่อยู่เว็บ URL ที่แสดงในเอาต์พุตของสคริปต์เปิดใช้งาน แล้วทดสอบแอปพลิเคชัน
* Running on http://your-hostname-here:5000
รูปแบบการนำไปใช้
Gemini API มีเครื่องมือการเขียนโปรแกรมที่สามารถแทนที่คอมโพเนนต์ของการใช้งานตัวแทนของเอกสาร โดยเฉพาะตัวแปรโมเดลของ Gemini สำหรับการดึงข้อมูลเชิงความหมายและการตอบคำถามที่มีการระบุแหล่งที่มา (AQA) คุณสามารถใช้ฟีเจอร์การดึงข้อมูลเชิงความหมายของ Gemini API เพื่อแทนที่ฐานข้อมูลเวกเตอร์แยกต่างหากได้ ฟีเจอร์การดึงข้อมูลเชิงความหมายช่วยให้คุณสร้างการฝังสําหรับเนื้อหาและจัดเก็บเนื้อหานั้นได้ โมเดล Gemini ของ AQA ได้รับการปรับให้ตอบคำถามด้วยเนื้อหาต้นฉบับที่ให้ไว้ในพรอมต์ คุณใช้การดึงข้อมูลเชิงความหมายร่วมกับโมเดล AQA เพื่อตอบคําถามเกี่ยวกับเนื้อหาของคุณได้ภายใน Gemini API
ตัวแทนของเอกสารมีตัวเลือกการกำหนดค่าเพื่อใช้ฟีเจอร์ Semantic Retrieved API, โมเดล AQA Gemini หรือทั้ง 2 อย่าง ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบสำหรับตัวแทนของ Google เอกสาร
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรเจ็กต์ Docs Agent ได้ที่ที่เก็บโค้ด หากต้องการความช่วยเหลือในการสร้างแอปพลิเคชันหรือกำลังมองหาผู้ทำงานร่วมกันที่เป็นนักพัฒนาซอฟต์แวร์ โปรดไปที่เซิร์ฟเวอร์ Discord ของชุมชนนักพัฒนาซอฟต์แวร์ Google
แอปพลิเคชันเวอร์ชันที่ใช้งานจริง
หากคุณวางแผนที่จะติดตั้งใช้งาน Docs Agent กับผู้ชมจำนวนมาก โปรดทราบว่าการใช้ Google Gemini API อาจอยู่ภายใต้การจำกัดอัตราและข้อจำกัดในการใช้งานอื่นๆ หากกำลังพิจารณาสร้างแอปพลิเคชันเวอร์ชันที่ใช้งานจริงด้วย Gemini API เช่น ตัวแทนของ Google เอกสาร โปรดดูบริการ Google Cloud Vertex AI เพื่อเพิ่มความยืดหยุ่นและความน่าเชื่อถือของแอป