ที่เก็บนี้มีแอปพลิเคชัน Python ที่ใช้ DuckDB เป็นแบ็กเอนด์เพื่อจัดเก็บและดึงเวกเตอร์ฝังตัว การใช้งานใหม่ของ DuckDB ช่วยให้การค้นหาความคล้ายคลึงกันอย่างมีประสิทธิภาพระหว่างชุดข้อมูลขนาดใหญ่ ในตัวอย่างนี้เราได้โหลดความคิดเห็นจาก Hacker News และใช้งานฟังก์ชั่นเพื่อค้นหาความคิดเห็นที่คล้ายกันมากที่สุด 10 ความคิดเห็นที่กำหนด
โคลนที่เก็บ:
git clone https://github.com/patricktrainer/duckdb-embedding-search.gitนำทางไปยังไดเรกทอรีที่เก็บ:
cd duckdb-embedding-searchติดตั้งแพ็คเกจที่ต้องการ:
pip install -r requirements.txtหากต้องการใช้แอปพลิเคชันให้ทำตามขั้นตอนเหล่านี้:
load_comments.py เพื่อโหลดความคิดเห็นลงในฐานข้อมูล DuckDB ความคิดเห็นและเวกเตอร์การฝังที่สอดคล้องกันของพวกเขาจะถูกเก็บไว้ในตาราง embeddings ของฐานข้อมูล hn_embeddings.dbmain.py ) และให้ความคิดเห็นข่าวแฮ็กเกอร์ สคริปต์จะส่งคืนความคิดเห็นที่คล้ายกันมากที่สุด 10 รายการจากฐานข้อมูลหมายเหตุ - ฟังก์ชั่น
get_similarityในembedding.pyจะสร้างเวกเตอร์ฝังตัวใหม่สำหรับความคิดเห็นที่ให้ไว้หากไม่มีอยู่ในฐานข้อมูล ซึ่งหมายความว่ามันจะเข้าสู่ Openai API ซึ่งจะนับรวมกับการใช้ API ของคุณ
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงฟังก์ชั่นของแอปพลิเคชัน ความคิดเห็นมีให้เป็นอินพุตและแอปพลิเคชันส่งคืนความคิดเห็นที่คล้ายกันมากที่สุด 10 รายการจากฐานข้อมูล
ความคิดเห็นที่ให้เป็นอินพุต:
สิ่งหนึ่งที่ฉันสังเกตเห็นคือวิศวกรหลายคนเมื่อพวกเขากำลังมองหาห้องสมุดบน GitHub พวกเขาตรวจสอบเวลาสุดท้าย พวกเขาคิดว่าการกระทำครั้งสุดท้ายล่าสุดคือยิ่งได้รับการสนับสนุนที่ดีกว่าห้องสมุดคือ แต่สิ่งที่เกี่ยวกับโครงการที่เก็บถาวรที่ทำในสิ่งที่คุณต้องการต้องทำมีข้อบกพร่อง 0 และมีเสถียรภาพมานานหลายปี? นั่นเหมือนกับการหาอัญมณีที่ซ่อนอยู่ในร้านค้าเจริญเติบโตอย่างรวดเร็ว! วิศวกรส่วนใหญ่ที่ฉันเห็นทุกวันนี้จะทิ้งไลบรารีที่ไม่ได้รับการปรับปรุงอย่างต่อเนื่อง ... หมายความว่ามันเป็นสิ่งที่ดี :)
ความคิดเห็นที่คล้ายกันมากที่สุดส่งคืนโดยแอปพลิเคชัน (ตัวย่อสำหรับความกะทัดรัด):
ข้อความ:> ความตายไปยังห้องสมุดที่ใช้ร่วมกัน อาการปวดหัวที่พวกเขาก่อให้เกิดไม่คุ้มค่ากับผลประโยชน์
ไม่เห็นด้วยอย่างสมบูรณ์ แม้ว่าขนาดหนึ่งจะไม่พอดีกับทุกคนที่ทำงบกวาดเกี่ยวกับห้องสมุดคงที่เพียงแค่ระบุให้โลกเห็นว่าพวกเขาหลงลืมอย่างสมบูรณ์เกี่ยวกับปัญหาการบำรุงรักษาซอฟต์แวร์ขั้นพื้นฐานเช่นการติดตามแพคเกจซอฟต์แวร์ที่ได้รับการปรับปรุงโดยเฉพาะผู้ที่ไม่ได้รับการปรับปรุงในแต่ละวัน
ความคล้ายคลึงกัน: 0.804798201033179
ข้อความ: จุดที่ดีมากมายที่นี่ แต่งานบำรุงรักษาสำหรับระบบที่ทำกำไรดูเหมือนจะใช้เวลาที่ถูกต้อง
ตอนนี้ระบบที่ทำกำไรบางอย่างกำลังค่อยๆบิตและวิศวกรที่ดำรงตำแหน่งสามารถทำงานเป็นประจำในขณะที่ไม่สามารถจัดการกับบิตโรตได้ แต่ฉันคิดว่าคนที่ เก่ง ในการทำให้แน่ใจว่าสิ่งที่น่าเบื่อและมั่นคงยังคงน่าเบื่อและมั่นคงมักจะต่ำเกินไป
ความคล้ายคลึงกัน: 0.796911347299464
connection.py : จัดการการเชื่อมต่อฐานข้อมูล DuckDBembedding.py : จัดการการปฏิบัติการเวกเตอร์ฝังoperations.py : มีฟังก์ชั่นยูทิลิตี้สำหรับการประมวลผลข้อมูลopenai_client.py : อินเทอร์เฟซกับ OpenAI API Duckdb ใช้เป็นฐานข้อมูลที่มีน้ำหนักเบาและมีประสิทธิภาพสูงเพื่อจัดเก็บเวกเตอร์ฝังตัว โมดูล connection.py สร้างการเชื่อมต่อกับ duckdb และ operations.py มีตรรกะสำหรับการแทรกและดึงการฝังตัว
การฝังเวกเตอร์ถูกสร้างขึ้นโดยใช้ API ของ OpenAI โมดูล openai_client.py มีตรรกะสำหรับการเชื่อมต่อกับ API โมดูล embedding.py มีตรรกะสำหรับการสร้างเวกเตอร์ฝังและเปรียบเทียบ