ผู้แต่ง: Sven Loesekann
เทคโนโลยี: Angular, Angular-Cli, Angular-material, TypeScript, Spring Boot, Spring AI, Openai, Ollama, PostgreSQL (เวกเตอร์, HSTORE), Liquibase, JPA, Gradle, Java
นี่คือโครงการที่แสดง Howto ใช้ Springai เพื่อแชทกับเอกสารในห้องสมุด เอกสารสามารถอัพโหลดจะถูกเก็บไว้ในฐานข้อมูลปกติและเวกเตอร์ AI ใช้ในการสร้าง embeddings จากชิ้นเอกสารที่เก็บไว้ในฐานข้อมูลเวกเตอร์ ในคำถามแชทสามารถถามได้ว่าจะเปิดใช้งานในการฝังและใช้สำหรับการร้องขอไปยังฐานข้อมูลเวกเตอร์ เวกเตอร์เอกสารที่มีระยะทางต่ำสุดใช้ในการโหลดเอกสารจากฐานข้อมูลและขอคำตอบจาก AI ตามโทเค็นเนื้อหาเอกสาร ที่ช่วยให้ AI สามารถสร้างคำตอบตามเนื้อหาของเอกสารและ จำกัด ภาพหลอน ลิงค์ไปยังเอกสารต้นฉบับมีไว้สำหรับการวิจัยเพิ่มเติม
โครงการใช้ Spring Boot กับ Spring AI เพื่อเข้าถึง OpenAI และฐานข้อมูล Vector PostgreSQL DB ใช้กับส่วนขยายเวกเตอร์, HSTORE และส่วนขยาย UUID-OSSP Liquibase ใช้ในการจัดการการย้ายฐานข้อมูล JPA ใช้สำหรับการเข้าถึงฐานข้อมูลในบริการโดย REST Controllers สำหรับวัสดุเชิงมุมด้านหน้าวัสดุเชิงมุมและตัวพิมพ์จะใช้เพื่อสร้างตารางเอกสารกล่องโต้ตอบการอัปโหลดและการแชทเอกสาร Angular CLI ใช้สำหรับการสร้างส่วนหน้าและ Gradle สำหรับการสร้างโครงการ
Ollama ใช้เพื่อใช้รุ่น AI/LLM ที่ใช้งานได้ในท้องถิ่น Ollama สามารถติดตั้งหรือทำงานเป็นภาพนักเทียบท่าในเครื่องท้องถิ่น Ollama รองรับห้องสมุดของโมเดล AI/LLM สำหรับกรณีการใช้งานที่แตกต่างกัน แบบจำลองเช่น LLAVA สำหรับคำอธิบายภาพ Falcon สำหรับการตอบคำถามตาม RAG, SQLCODER สำหรับการสร้าง SQL และ MixTRAL สำหรับการเรียกใช้ฟังก์ชันสามารถใช้งานได้ Ollama สามารถใช้ GPU ได้หากมีและทำงานกับ CPU โดยไม่มีพวกเขา Spring AI มีการสนับสนุน Ollama ที่ทำให้การใช้งานคล้ายกับการใช้บริการ AI ในซีพียูปัจจุบันมักจะมีปัญหาด้านประสิทธิภาพ ผู้ให้บริการ CPU ต้องการเพิ่มเอ็นจิ้น AI ลงในซีพียูในอนาคตเพื่อแก้ไขปัญหาเหล่านี้
โครงการใช้ Spring Boot กับ Spring AI เพื่อถามฐานข้อมูลรูปภาพที่ใช้ PostgreSQL กับ PGVector Extension และ Ollama สำหรับภาพที่นำเข้าและปรับขนาดเป็นคำอธิบายที่สร้างขึ้นด้วยโมเดล LLAVA ที่ทำงานในท้องถิ่นบน Ollama คำอธิบายเหล่านี้จะถูกเปลี่ยนเป็น embeddings และถูกเก็บไว้ด้วยคำอธิบายในฐานข้อมูลเวกเตอร์ ภาพและข้อมูลเมตาถูกเก็บไว้ในฐานข้อมูลเชิงสัมพันธ์ คำถามเกี่ยวกับฐานข้อมูลรูปภาพจะถูกเปิดใช้งานใน Embeddings และฐานข้อมูลเวกเตอร์จะถูกสอบถามสำหรับเพื่อนบ้านที่ใกล้ที่สุด การจับคู่ที่ดีที่สุดจะถูกส่งกลับด้วยรูปภาพและคำอธิบาย ผลลัพธ์จะแสดงในส่วนหน้า สิ่งนี้เปิดใช้งานได้คือการค้นหารูปภาพรูปแบบใหม่ที่เป็นไปไม่ได้ก่อนที่ AI/LLM จะใช้งานได้
โครงการใช้ Spring AI เพื่อเปลี่ยนคำถามด้วย LLMS เป็นแบบสอบถาม SQL และแสดงผลลัพธ์ในส่วนหน้า จากข้อมูลเมตาที่มีให้สำหรับชุดข้อมูลเชิงสัมพันธ์ LLM สามารถสร้างการฝังตัวสำหรับข้อมูลเมตาของตารางและคอลัมน์ โครงการยังสร้าง Embeddings สำหรับเนื้อหาของคอลัมน์บางอย่างเพื่อให้สามารถตัดสินใจได้ว่าควรใช้คอลัมน์เป็นเข้าร่วมในแบบสอบถาม SQL หรือไม่ ด้วยเมตาดาต้าที่ฝังตัวนั้น LLM จึงสามารถเปลี่ยนคำถามในแบบสอบถาม SQL ที่สมเหตุสมผลและแสดงผลลัพธ์ในส่วนหน้า ส่วนหน้าใช้ตารางวัสดุเชิงมุมที่มีจำนวนคอลัมน์และแถวที่ยืดหยุ่น
โครงการใช้ Spring AI เพื่อเปลี่ยนคำถามเกี่ยวกับหนังสือให้เป็นฟังก์ชั่น REST เรียกใช้ OpenLibrary API มันใช้โมเดล LLAMA3.1 และฟังก์ชั่น Spring AI Calling API การตอบสนอง API ใช้เพื่อสร้างการตอบสนอง
โครงการใช้ Spring AI เพื่อสร้างคลาสทดสอบ ในการทำเช่นนั้นมีการทดสอบคลาสและคลาสที่คลาสเพื่อทดสอบขึ้นอยู่กับ นอกจากนี้ยังสามารถให้คลาสตัวอย่างการทดสอบได้ จากนั้น AI/LLM ที่ใช้ Ollama จะได้รับข้อมูลพร้อมข้อมูลทั้งหมดและสร้างร่างของแหล่งที่มาของคลาสทดสอบ
โครงการใช้ Spring AI เพื่อสร้างบทสรุปของหนังสือ เพื่อสร้างบทสรุปหัวข้อบทและหัวข้อหลังจากบทสุดท้ายจะต้องมีให้ จากนั้นสรุปบทในรูปแบบของกระสุนถูกสร้างขึ้น สรุปหนังสือถูกสร้างขึ้นจากบทสรุปบท
โครงการแสดง HOWTO ใช้ Spring AI เพื่อสร้างคำตอบตามชุดเอกสารที่ให้ไว้พร้อมลิงค์ไปยังแหล่งที่มา ส่วนหน้าเชิงมุมให้ส่วนต่อประสานผู้ใช้สำหรับแบ็กเอนด์และแสดงการตอบสนอง
โครงการแสดง HOWTO ใช้ Spring AI เพื่อสร้างคำอธิบายสำหรับภาพที่อัปโหลดและเก็บภาพคำอธิบายและคำอธิบาย EMBEDDINGS ในฐานข้อมูล คำถามที่ถามถึงฐานข้อมูลภาพจะถูกเปิดใช้งานในการฝังและคำอธิบายที่เหมาะสมที่สุดกับภาพจะถูกส่งคืน Frontend เชิงมุมมีส่วนต่อประสานกับผู้ใช้เพื่อแสดงผลลัพธ์และอัปโหลดรูปภาพ
โครงการแสดง HOWTO ใช้ Spring AI เพื่อสร้างแบบสอบถาม SQL ตามข้อมูลเมตาที่ให้ไว้สำหรับตาราง/คอลัมน์ ส่วนหน้าเชิงมุมมีส่วนต่อประสานกับผู้ใช้เพื่อแสดงผลลัพธ์ในตาราง
โครงการแสดง HOWTO ใช้ Spring AI เพื่อเลือก REST อินเทอร์เฟซเพื่อโทรและให้พารามิเตอร์สำหรับการโทรที่เหลือ ส่วนหน้าเชิงมุมให้ส่วนต่อประสานผู้ใช้เพื่อถามคำถามและแสดงผลลัพธ์ของการโทรที่เหลือ
โครงการแสดง HOWTO ใช้ Spring AI เพื่อสร้างฐานข้อมูลรูปภาพที่สามารถสอบถามได้ด้วยคำถามภาษาธรรมชาติและส่งคืนภาพที่จับคู่ที่ใกล้เคียงที่สุดพร้อมคำอธิบายของพวกเขา
Spring AI ทำให้การใช้ OpenAI / Ollama Services ง่ายและมีประโยชน์และโครงการนี้แสดงให้เห็นว่า
โครงการมีแผนภาพบริบทของระบบแผนภาพคอนเทนเนอร์และไดอะแกรมส่วนประกอบ ไดอะแกรมถูกสร้างขึ้นด้วย structurizr ไฟล์ runstructurizr.sh มีคำสั่งที่จะใช้ structurizr และ structory directory มีไฟล์ DSL
ในไดเรกทอรี Helm คือการตั้งค่า Kubernetes เพื่อเรียกใช้โครงการ AidocumentLibraryChat ด้วย minikube แผนภูมิ Helm ปรับใช้ฐานข้อมูล Postgres และ AidocumentLibraryChat พร้อมพารามิเตอร์ที่จำเป็น (SpringProfile อยู่ใน Value.YAML) เพื่อเรียกใช้ มันใช้การสนับสนุนขีด จำกัด ทรัพยากรของ JDK 16 เพื่อ จำกัด หน่วยความจำ Kubernetes จำกัด การใช้งาน CPU และใช้ startupprobes และ liventyprobes ที่ Spring Actuator ให้
ในไฟล์ runpostgresql.sh เป็นคำสั่งที่จะดึงและเรียกใช้ภาพ PostgreSQL Docker พร้อมส่วนขยายเวกเตอร์ในเครื่อง
ในการรับคีย์ OpenAI API คุณต้องสร้างบัญชีที่ https://platform.openai.com และสร้างคีย์ในการตั้งค่าผู้ใช้ คีย์นั้นจะต้องเพิ่มในแอปพลิเคชัน properties ที่คีย์: 'spring.ai.openai.api-key' เป็นทางเลือกมันสามารถให้เป็นตัวแปรสภาพแวดล้อม 'Open-Api-Key'
Ollama สามารถเรียกใช้โมเดล AI ได้ในพื้นที่ ไฟล์ runollama.sh มีคำสั่งให้เรียกใช้เป็นคอนเทนเนอร์ Docker แอปพลิเคชันจะต้องมีการสร้างด้วยคุณสมบัติ 'useollama = true' Gradle Build เพื่อรวมการพึ่งพา แอปพลิเคชันจะต้องเริ่มต้นด้วยโปรไฟล์ 'Ollama' เพื่อเปิดการกำหนดค่า/คุณสมบัติเพื่อใช้โมเดลที่ใช้ Ollama Ollama มีการสนับสนุนการเร่งความเร็ว GPU
PostgreSQL พร้อมการขยายเวกเตอร์ 0.5.1 หรือใหม่กว่า
Java 21 หรือใหม่กว่า
Gradle 8.3 หรือใหม่กว่า
nodejs 18.13.x หรือใหม่กว่า
NPM 8.19.x หรือใหม่กว่า
Angular CLI 17 หรือใหม่กว่า