spring Ai---向量知識庫(一)

在一些垂直領域以及公司內部信息相關或者實時性相關的大模型應用,就無法直接使用chatGPT。
這個時候,向量知識庫就進入了。
通過坐標向量最接近的即為匹配相關答案。
向量模型定義:將文檔向量化,保證內容越相似的文本,在向量空間中距離越近;
第一步:引入依賴

    <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency>

測試輸入一段文本,被存儲在里面的坐標

 float[] textFlot = openAiEmbeddingModel.embed("我是中國人");System.out.println("輸出"+ Arrays.toString(textFlot));

第二步,配置:

      embedding:options:model: text-embedding-v3dimensions: 1024

存儲文檔的可以用redis, es等;
對于API調用層,都是如下的調用方法
在這里插入圖片描述
本次案例使用自帶的SimpleVectorStore

    @Beanpublic VectorStore vectorStore(OpenAiEmbeddingModel embeddingModel) {return SimpleVectorStore.builder(embeddingModel).build();}

第三步:實現測試
我們需要先將文檔轉為Document,存入向量庫

        // 1.創建PDF的讀取器PagePdfDocumentReader reader = new PagePdfDocumentReader(resource, // 文件源PdfDocumentReaderConfig.builder().withPageExtractedTextFormatter(ExtractedTextFormatter.defaults()).withPagesPerDocument(1) // 每1頁PDF作為一個Document.build());// 2.讀取PDF文檔,拆分為DocumentList<Document> documents = reader.read();// 3.寫入向量庫vectorStore.add(documents);

然后進行組裝搜索

    SearchRequest request = SearchRequest.builder().query("論語中教育的目的是什么").topK(1).similarityThreshold(0.6).filterExpression("file_name == '知識筆記.pdf'").build();

最后通過調用接口搜索

 List<Document> docs = vectorStore.similaritySearch(request);

以上就實現了一個簡單的自帶存儲PDF,然后進行向量接口搜索的demo

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76545.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Viper配置管理筆記

一、什么是 Viper&#xff1f; Viper 是 Go 語言的一個強大工具&#xff0c;就像一個超級管家&#xff0c;專門負責幫你打理程序的各種配置。它能把配置文件&#xff08;比如 JSON、YAML、TOML 等格式&#xff09;里的內容讀出來&#xff0c;還能監控配置文件的變化&#xff0…

實現對象之間的序列化和反序列化

1.什么是序列化&#xff1f; 在項目的開發中&#xff0c;為了讓前端更好的分析后端返回的結果&#xff0c;我們一般會將返回的信息進行序列化&#xff0c;序列化就是將返回對象的狀態信息轉換為一種標準化的格式&#xff0c;方便在網絡中傳輸也方便打印日志時號觀察&#xff0…

ThreadLocal - 原理與應用場景詳解

ThreadLocal 的基礎概念 在 Java 的多線程世界里&#xff0c;線程之間的數據共享與隔離一直是一個關鍵話題。如果處理不當&#xff0c;很容易引發線程安全問題&#xff0c;比如數據混亂、臟讀等。而 ThreadLocal 這個工具類&#xff0c;就像是為線程量身定制的 “私人儲物柜”…

iwebsec靶場 文件包含關卡通關筆記11-ssh日志文件包含

目錄 日志包含 1.構造惡意ssh登錄命令 2.配置ssh日志開啟 &#xff08;1&#xff09;配置sshd &#xff08;2&#xff09;配置rsyslog &#xff08;3&#xff09;重啟服務 3.寫入webshell木馬 4.獲取php信息滲透 5.蟻劍連接 日志包含 1.構造惡意ssh登錄命令 ssh服務…

Diamond軟件的使用--(4)搭建Modelsim仿真庫

使用Modelsim仿真的原因 由于diamond自帶的仿真軟件Active-HDL需要另一套Lisence&#xff0c;所以我們使用第三方仿真軟件Modelsim來進行仿真。 Modelsim10.5下載鏈接如下&#xff1a;https://pan.baidu.com/s/1G9699ocWm1UTqK2yS2igyQ 提取碼&#xff1a;lewa 一、Lattice仿…

2025年4月19日,四月第三周,C++,字符串數組答案解析

答案與解析 1. 輸出字符串數組所有元素 cpp 復制 下載 #include <iostream> using namespace std;int main() {string arr[] = {"apple", "banana", "cherry"};int n = sizeof(arr)/sizeof(arr[0]); // 計算數組長度for (int i = 0; …

C語言之高校學生信息快速查詢系統的實現

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 總有人間一兩風&#xff0c;填我十萬八千夢。 &#x1f680; 路漫漫其修遠兮&#xff0c;吾將上下而求索。 C語言之高校學生信息快速查詢系統的實現 目錄 任務陳述與分析 問題陳述問題分析 數據結構設…

【網絡篇】TCP vs UDP底層區別+網絡編程概念

大家好呀 我是浪前 今天講解的是網絡篇的第三章&#xff1a;網絡編程概念和TCP&UDP的區別 網絡編程概念TCP和UDP的區別 跨主機通信:網絡編程插座&#xff1a;網絡編程的本質&#xff1a; 網絡編程的重要概念&#xff1a;客戶端和服務器&#xff1a; 客戶端和服務器的交互模…

EMIF詳解

一、EMIF的基本定義 EMIF&#xff08;External Memory Interface&#xff0c;外部存儲器接口&#xff09; 是嵌入式處理器&#xff08;如DSP、FPGA、SoC&#xff09;用于連接外部存儲器的專用硬件接口模塊&#xff0c;負責管理處理器與存儲器之間的地址/數據總線、控制信號及時…

Keil MDK 編譯問題:function “HAL_IncTick“ declared implicitly

問題與處理策略 問題描述 ..\..\User\stm32f1xx_it.c(141): warning: #223-D: function "HAL_IncTick" declared implicitlyHAL_IncTick(); ..\..\User\stm32f1xx_it.c: 1 warning, 0 errors問題原因 在 stm32f1xx_it.c 文件中調用了 HAL_IncTick()&#xff0c;但…

Java Web項目(一)

框架 java web項目總工分為兩部分&#xff1a;客戶端&#xff08;前端&#xff09;和服務端&#xff08;后端&#xff09; 客戶端發起請求&#xff0c;服務端接受請求并進行處理 發起請求的方式&#xff1a;from表單、jQuery ajax from表單 造成全局的變化&#xff0c;在發…

Dify部署內網時遇到的代理問題及解決辦法

大家知道&#xff0c;在公網環境下利用docker安裝dify源碼鏡像比較容易&#xff0c;詳見我之前的文章&#xff0c;基于dify開發agent、workflow等非常方便&#xff0c;本次想著在內部網絡環境下也完成部署&#xff0c;以方便更多的人使用&#xff0c;但在部署到內網環境下&…

多節點監控的docker管理面板Portainer安裝指南:家庭云計算專家

背景 Portainer 是一個輕量級且功能強大的容器管理面板&#xff0c;專為 Docker 和 Kubernetes 環境設計。它通過直觀的 Web 界面簡化了容器的部署、管理和監控&#xff0c;即使是非技術用戶也能輕松上手。Portainer 支持多節點管理&#xff0c;允許用戶從一個中央控制臺管理多…

Linux內核哈希表學習筆記

前沿 近期項目中需要給自定義的驅動增加一個功能存儲相關的數據信息。結合實際業務層面,最終決定采用哈希表的結構來存儲。因為其具備快速查找,插入和刪除。其實現原理通過散列函數映射到指定位置。時間復雜度O(1).而且運算速度也快,很適合處理大量的數據場景。但是其也有一…

對于在線教育或知識付費類網站視頻處理方案

一、視頻格式&#xff1a; 1. 推薦格式&#xff1a;HLS&#xff08;HTTP Live Streaming&#xff09; 優勢?&#xff1a; ?自適應碼率?&#xff1a;根據用戶網絡狀況自動切換清晰度&#xff0c;避免卡頓。?廣泛兼容性?&#xff1a;iOS/macOS 原生支持&#xff0c;Android…

Deepseek輸出的內容如何直接轉化為word文件?

我們有時候會直接利用deepseek翻譯別人的文章或者想將deepseek輸出的內容直接復制到word文檔里。但是文本格式和word是不對應的。這時候需要輸入如下命令&#xff1a; 以上翻譯內容的格式和排版要求如下&#xff1a; 1、一級標題 字體為黑體&#xff08;三號&#xff09;&…

【Vue】組件通信(Props/Emit、EventBus、Provide/Inject)

個人主頁&#xff1a;Guiat 歸屬專欄&#xff1a;Vue 文章目錄 1. Props/Emit 父子組件通信1.1 Props 向下傳遞數據1.2 Emit 向上傳遞事件 2. EventBus 跨組件通信2.1 創建事件總線2.2 使用事件總線2.3 EventBus 優缺點 3. Provide/Inject 深層組件通信3.1 基本使用3.2 響應式處…

vulnhub sunset系列靶機合集(部分)

描述&#xff1a;該合集包含sunset系列適合新手的四個靶機&#xff08;sunset:1、dusk、sunrise、noontide&#xff09;的滲透全過程。 靶機下載地址&#xff1a;Vulnerable By Design - Search: sunset ~ VulnHubhttps://www.vulnhub.com/?qsunset sunset:1 滲透過程 信息…

【MySQL】MySQL的基礎語法及其語句的介紹

1、基礎語法 mysql -h【主機名】 -u【用戶名】 -p //登錄MySQL exit或quit; //退出MySQL show database; //查看MySQL下的所有數據庫 use 【數據庫名】; //進入數據庫 show tables; //查看數據庫下的所有表名 *MySQL的啟動和關閉 &am…

2025-4-20-C++ 學習 數組(1)

數組 2025-4-20-C++ 學習 數組(1)P1428 小魚比可愛題目描述輸入格式輸出格式輸入輸出樣例 #1輸入 #1輸出 #1說明/提示題解代碼P1427 小魚的數字游戲題目描述輸入格式輸出格式輸入輸出樣例 #1輸入 #1輸出 #1說明/提示數據規模與約定題解代碼P5727 【深基5.例3】冰雹猜想題目描…