自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SpringAI用嵌入模型操作向量數(shù)據(jù)庫!

數(shù)據(jù)庫 人工智能
嵌入模型和向量數(shù)據(jù)庫是實(shí)現(xiàn) RAG(檢索增強(qiáng)生成)的技術(shù)基礎(chǔ),當(dāng)然除了以上案例外,你可以使用 Redis 或 ES 來存儲(chǔ)向量數(shù)據(jù),并嘗試加入 DeepSeek 實(shí)現(xiàn) RAG 功能,這種形式更符合企業(yè)真實(shí)的技術(shù)應(yīng)用。

嵌入模型(Embedding Model)和向量數(shù)據(jù)庫(Vector Database/Vector Store)是一對(duì)親密無間的合作伙伴,也是 AI 技術(shù)棧中緊密關(guān)聯(lián)的兩大核心組件,兩者的協(xié)同作用構(gòu)成了現(xiàn)代語義搜索、推薦系統(tǒng)和 RAG(Retrieval Augmented Generation,檢索增強(qiáng)生成)等應(yīng)用的技術(shù)基礎(chǔ)。

“PS:準(zhǔn)確來說 Vector Database 和 Vector Store 不完全相同,前者主要用于“向量”數(shù)據(jù)的存儲(chǔ),而 Vector Store 是用于存儲(chǔ)和檢索向量數(shù)據(jù)的組件。

在 Spring AI 中,嵌入模型 API 和 Spring AI Model API 和嵌入模型的關(guān)系如下:

系統(tǒng)整體交互流程如下:

接下來我們使用以下技術(shù):

  • Spring AI
  • 阿里云文本嵌入模型 text-embedding-v3
  • SimpleVectorStore(內(nèi)存級(jí)別存儲(chǔ)和檢索向量數(shù)據(jù)組件)

實(shí)現(xiàn)嵌入模型操作內(nèi)存級(jí)別向量數(shù)據(jù)庫的案例。

1.添加項(xiàng)目依賴

我們使用阿里云百煉平臺(tái)的嵌入模型 text-embedding-v3 是兼容 OpenAI 的 SDK 的,因此,我們只需要添加 OpenAI 依賴即可:

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

2.配置嵌入模型

阿里云百煉平臺(tái)支持的向量模型:

項(xiàng)目配置文件配置向量模型:

spring:
  ai:
    openai:
      api-key: ${aliyun-ak}
      embedding:
        options:
          model: text-embedding-v3
      chat:
        options:
          model: deepseek-r1

3.配置向量模型

將 EmbeddingModel 和 VectorStore 進(jìn)行關(guān)聯(lián),如下代碼所示:

@Bean
public VectorStore vectorStore(EmbeddingModel embeddingModel) {
return SimpleVectorStore.builder(embeddingModel).build();
}

4.向量數(shù)據(jù)庫添加數(shù)據(jù)

VectorStore 提供的常用方法如下:

  • add(Listdocuments) :添加文檔。
  • delete(ListidList) :按 ID 刪除文檔。
  • delete(Filter.Expression filterExpression) :按過濾表達(dá)式刪除文檔。
  • similaritySearch(String query) 和 similaritySearch(SearchRequest request) :相似性搜索。

向數(shù)據(jù)庫添加向量數(shù)據(jù)的方法如下:

// 構(gòu)建測(cè)試數(shù)據(jù)
List<Document> documents =
List.of(new Document("I like Spring Boot"),
        new Document("I love Java"));
// 添加到向量數(shù)據(jù)庫
vectorStore.add(documents);

當(dāng)然,向量數(shù)據(jù)的數(shù)據(jù)源可以是文件、圖片、音頻等資源,這里為了簡(jiǎn)單演示整體執(zhí)行流程,使用了更簡(jiǎn)單直觀的文本作為數(shù)據(jù)源。

5.查詢數(shù)據(jù)

@RestController
@RequestMapping("/vector")
publicclass VectorController {

    @Resource
    private VectorStore vectorStore;

    @RequestMapping("/find")
    public List find(@RequestParam String query) {
        // 構(gòu)建搜索請(qǐng)求,設(shè)置查詢文本和返回的文檔數(shù)量
        SearchRequest request = SearchRequest.builder()
        .query(query)
        .topK(3)
        .build();
        List<Document> result = vectorStore.similaritySearch(request);
        System.out.println(result);
        return result;
    }
}

執(zhí)行結(jié)果如下:

從上述結(jié)果可以看出,和“java”相似度最高的向量為“I love Java”,相似度評(píng)分為 0.77,如果我們 SearchRequest 對(duì)象中的 topK 設(shè)置為 1 的話,只會(huì)查詢“I love Java”這條數(shù)據(jù),如下圖所示:

“想要獲取完整案例的同學(xué)加V:vipStone【備注:向量】

小結(jié)

嵌入模型和向量數(shù)據(jù)庫是實(shí)現(xiàn) RAG(檢索增強(qiáng)生成)的技術(shù)基礎(chǔ),當(dāng)然除了以上案例外,你可以使用 Redis 或 ES 來存儲(chǔ)向量數(shù)據(jù),并嘗試加入 DeepSeek 實(shí)現(xiàn) RAG 功能,這種形式更符合企業(yè)真實(shí)的技術(shù)應(yīng)用。

責(zé)任編輯:姜華 來源: 磊哥和Java
相關(guān)推薦

2025-04-17 00:00:00

2023-11-27 00:58:00

數(shù)據(jù)庫AI

2023-10-06 13:52:40

數(shù)據(jù)庫模型

2024-05-31 13:33:11

大模型向量數(shù)據(jù)庫

2023-07-20 20:54:09

2024-05-22 12:07:12

向量數(shù)據(jù)庫AI

2023-07-28 08:00:00

人工智能向量數(shù)據(jù)庫

2024-08-02 08:00:00

2024-03-01 08:00:00

2024-12-23 11:31:05

大模型檢索人工智能

2024-03-07 10:09:42

向量數(shù)據(jù)庫

2023-01-05 08:00:00

2022-12-05 08:00:00

數(shù)據(jù)庫向量化數(shù)據(jù)庫性能

2025-04-03 16:02:14

2023-10-09 14:51:53

向量數(shù)據(jù)庫

2023-11-17 07:30:30

線段pgvector實(shí)踐

2010-05-18 11:04:11

MySQL數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)