作者:Sven Loesekann
技術:角,角度,角質材料,分形碼,春季啟動,Spring AI,Openai,Ollama,Ollama,Postgresql(vector,hstore),Liquibase,JPA,Gradle,Java,Java
這是一個顯示如何使用Springai與庫中的文檔聊天的項目。然後可以將文檔上傳存儲在普通和矢量數據庫中。 AI用於從存儲在矢量數據庫中的文檔的塊中創建嵌入。在聊天問題中,可以問到嵌入式嵌入,並用於向矢量數據庫的請求。最低距離的文檔向量用於從數據庫中加載文檔,並根據文檔內容令牌請求AI的答案。這使AI能夠根據文檔的內容生成答案並限制幻覺。提供了指向源文檔的鏈接以進行進一步研究。
該項目使用帶有Spring AI的Spring Boot訪問OpenAI和Vector數據庫。 PostgreSQL DB與向量,Hstore和UUID-OSSP擴展一起使用。 Liquibase用於管理數據庫遷移。 JPA用於由REST控制器在服務中的數據庫訪問。對於前端角度,角度材料和打字稿用於創建文檔表,上傳對話框和文檔聊天。 Angular CLI用於項目構建的前端構建和Gradle。
Ollama用於使用本地運行的AI/LLM型號。 Ollama可以在本地機器中安裝或作為Docker圖像運行。 Ollama支持用於不同用例的AI/LLM型號庫。諸如用於圖像描述的LLAVA之類的模型,可以使用用於抹布的問題答案的獵鷹,SQLCoder,SQLCoder和用於功能調用的混音。如果Ollama可用,可以使用GPU,並且在沒有它們的情況下可以在CPU上使用。 Spring AI具有Ollama的支持,可以使用類似於使用AI服務的使用。在當前的CPU上,通常存在性能問題。 CPU提供商希望將來將AI引擎添加到其CPU中,以解決這些問題。
該項目將帶有Spring AI的Spring Boot使用Spring Boot來質疑與PGVECTOR擴展和Ollama一起使用PostgreSQL的圖像數據庫。對於導入和調整大小的圖像是用Ollama本地運行的LLAVA模型生成的描述。這些描述是在嵌入式中轉動的,並在矢量數據庫中存儲了描述。圖像和元數據存儲在關係數據庫中。圖像數據庫的問題是在嵌入式中轉動的,並且對矢量數據庫進行查詢。最好的匹配包括圖像和描述。結果顯示在前端。這種啟用是新型的圖像搜索,在AI/llms成為可用的情況下是不可能的。
該項目使用Spring AI將LLMS的問題轉換為SQL查詢,並在前端顯示結果。基於為關係數據集提供的元數據,LLM能夠為表和列的元數據創建嵌入。該項目還為某些列的內容創建嵌入,以便能夠確定是否應將列用作SQL查詢中的JOIN。通過嵌入元數據,LLM能夠在合理的SQL查詢中提出問題,並在前端顯示結果。前端使用具有靈活數量的圓柱和行的角材料表。
該項目使用Spring AI將有關書籍的問題轉化為“ REST功能”調用OpenLibrary API。它使用Llama3.1模型和Spring AI函數調用API。 API響應用於創建響應。
該項目使用Spring AI生成測試類。為此,提供了要測試的課程,並且要測試的課程取決於。還可以提供測試示例類。然後,基於Ollama的AI/LLM將獲得所有信息的提示,並生成了測試類源的草稿。
該項目使用Spring AI來生成書籍摘要。要生成摘要,必須提供上一章之後的章節標題和標題。然後,生成了章節的摘要。本章摘要創建了一本書摘要。
該項目顯示Howto使用Spring AI根據提供的一組文檔來生成答案,並具有指向源的鏈接。 Angular前端為後端提供了用戶界面,並顯示了響應。
該項目顯示瞭如何使用Spring AI生成上傳圖像的描述並存儲圖像,描述和描述嵌入數據庫中的描述。向圖像數據庫提出的問題是將嵌入式解散的,並返回圖像的最佳擬合描述。 Angular前端提供了一個用戶界面來顯示結果並上傳圖像。
該項目顯示Howto使用Spring AI根據表/列提供的元數據生成SQL查詢。 Angular Frontend提供了一個用戶界面,以在表中顯示結果。
該項目顯示Howto使用Spring AI選擇要調用的REST接口並提供其餘呼叫的參數。 Angular前端提供了用戶界面來提出問題並顯示其餘呼叫的結果。
該項目顯示瞭如何使用Spring AI創建圖像數據庫,該數據庫可以通過自然語言問題查詢,並返回最接近的匹配圖像,並使用其描述。
Spring AI使用OpenAI / Ollama服務簡單而有用,該項目證明了這一點。
該項目具有系統上下文圖,一個容器圖和組件圖。這些圖是用structurizr創建的。該文件運行STRUCTURIZR.SH包含用於使用structurizr的命令,並且目錄structurizr包含DSL文件。
在Helm目錄中是一個Kubernetes設置,可使用Minikube運行AidocumentLibraryChat項目。 Helm圖將Postgres數據庫和AIDOcumentLibraryChat使用所需的參數(springprofile in value.yaml)運行。它使用JDK 16的資源限制支持來限制內存。 Kubernetes限制了CPU的使用,並使用了Spring Actuator提供的啟動企業和Livices Probes。
在runpostgresql.sh中,文件是在本地使用向量擴展名來拉出並運行PostgreSQL Docker映像的命令。
要獲取OpenAI API密鑰,您需要在https://platform.openai.com上創建一個帳戶,並在用戶設置中創建一個密鑰。該密鑰必須在應用程序中添加。作為替代方案,它可以作為環境變量“開放式鍵”提供。
Ollama可以在本地運行AI模型。文件Runollama.sh具有將其作為Docker容器運行的命令。需要使用“ Useollama = true” Gradle Build屬性構建應用程序,以包括依賴項。該應用程序需要從“ Ollama”配置文件開始,以打開配置/功能以使用基於Ollama的模型。 Ollama支持GPU加速。
具有向量擴展0.5.1或更新的載體擴展的PostgreSQL
Java 21或更新
Gradle 8.3或更新
Nodejs 18.13.x或更新
NPM 8.19.x或更新
角CLI 17或更新