亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

將Java加入到無結構AI流程中(Java RAG應用實踐)

Milvus, Java, 奥拉玛, LLama 3.2, ADS-B, Langchain4J, Milvus Java SDK, 向量数据库, 开源

广播式自动相关监视 (ADS-B)

应用操作演示

我一直在尝试使用Milvus Java SDK和Langchain4J来构建一些应用程序,以将我老旧的Java应用程序现代化升级,并迁移到Milvus和AI驱动的应用程序。接下来将是使用Spring AI构建应用程序,以及一些现成的与Apache Pulsar和Apache Kafka集成的应用程序,以将这些应用程序迁移到Milvus和AI驱动的应用程序。

第一个 Java 应用 RagLoader 会从我们用 Python 笔记本加载的 liveplanes 集合中查询最多 16,384 行数据行。它会过滤掉那些 “flightidentifier != ‘NA’” 的数据行,这会移除那些没有航班标识符的飞机数据。这些很可能是没有商业用途的飞机。

我们检查结果

    for (QueryResp.QueryResult result : insertList.getQueryResults()) {

并创建一个新的 JsonObject 来存储一些有用的元数据,例如 ICAO、高度、速度、经纬度和航班ID。这些字段例如 ICAO、高度、速度、经纬度、航班ID 都很有用,我们可能需要它们来进行后续的过滤。我们接着添加必要的 RAG 字段,比如 id、text 和 vector。我们接着将这些数据发送到插入操作,现在我们有了可以用来运行 Java RAG 应用程序的记录。

Java RAG(增强检索生成LangChain4J)

我们将使用由Ollama托管并在我的Mac上本地运行的模型,名为llama3.2:3b-instruct-fp16。

首先,我们配置我们的嵌入存储系统:

    EmbeddingStore<TextSegment> embeddingStore = MilvusEmbeddingStore.builder()  
            .uri("http://MYDOCKERORLOCATION:19530")  
            .collectionName("aircraftrag")  
            .dimension(384)  // 维度为384
            .build();

接下来我们来搭建聊天窗口。

interface Assistant {  
    对话(String 用户消息);  
}

接着我们连接到本地的 Ollama 服务器。

    // 创建一个聊天模型实例,配置模型服务地址和参数
    ChatLanguageModel chatModel = OllamaChatModel.builder()  
            .baseUrl("http://localhost:11434")  
            .modelName("llama3.2:3b-instruct-fp16")  
            .temperature(0.0)  
            .build();  

我们开启服务,并将所有东西连接起来。

// 创建一个AI助手实例,设置对话语言模型、会话记忆和内容检索器
Assistant assistant = AiServices.builder(Assistant.class)  
            .chatLanguageModel(chatModel)  
            .chatMemory(MessageWindowChatMemory.withMaxMessages(10))  
            .contentRetriever(EmbeddingStoreContentRetriever.from(embeddingStore))  
            .build();

最后,我们得到了回复。

assistant根据提示进行聊天,并将回答赋值给answer。

_参数_通过命令行传递的。

通过像这样的 shell 脚本调用如下:

// 这个命令用于编译并运行名为 "dev.datainmotion.Aircraft" 的Java类,传递的第一个参数为'$1'
mvn compile exec:java -Dexec.mainClass="dev.datainmotion.Aircraft"   
            -Dexec.args="'$1'"

我们终于用Java开发了一个RAG应用程序。

堆栈
  • Milvus v2.11 单机版 Docker
  • ollama 版本为 0.3.12
  • JDK 22 (OpenJDK 64-Bit Server VM Temurin-22.0.2+9)
  • Apache Maven 3.9.6
  • langchain4j-ollama 0.35.0
  • langchain4j-milvus 0.35.0
  • milvus-sdk-java 2.4.4
  • slf4j-api 1.7.30
  • 操作系统:"mac os x",版本:"13.6.7",架构:"aarch64",系统系列:mac
来源
GitHub - tspannhw/AIM-Aircraft-J: 一个结合了AI、Milvus、Ollama、LangChain4J和Milvus Java SDK的项目

找找

加载RAG数据集

带有Ollama的RAG系统(RAG,检索和生成的缩写)

这里是数据

示例演示
    ***使用llama3.2:3b-instruct-fp16模型回答Ollama的问题:  
    ****问题=告诉我关于A320的一些信息  

    ****回答如下=  
    以下是关于这两种飞机的一些关键信息:  

    **A320 AAY1207**  

* 飞机型号:空客A320  

* 航空公司:美国的阿尔勒特航空  

* 位置:40.285282, -74.290799  

* 高度:  
     + 气压高度:35,000英尺  
     + 地形高度:37,000英尺  

* 速度:510.0英里/小时  

* 图片网址:https://airport-data.com/images/aircraft/001/668/001668328.jpg  

    **A321 AAL1164**  

* 飞机型号:空客A321  

* 航空公司:美国的美国航空  

* 位置:40.23347, -74.456281  

* 高度:  
     + 气压高度:9,875英尺  
     + 地形高度:10,200英尺  

* 速度:306.2英里/小时  

* 图片网址:https://airport-data.com/images/aircraft/001/600/001600717.jpg  
资源(比如文档和工具等)
LangChain4j | 描述将放入 docs.langchain4j.dev 的元标签里
GitHub - milvus-io/milvus-sdk-java: Milvus的Java SDK

通过在GitHub上创建账户参与milvus-io/milvus-sdk-java的开发。

GitHub - tspannhw/AIM-ADS-B: 基于 AI 和 Milvus 的 ADS-B 航空器跟踪。加入 GitHub 并为项目贡献代码。
PlanesRESOURCESmedium.com
纽约的非结构化数据聚会

10月23日(周三)下午5:30到8:30

纽约无结构数据Meetup活动 · Luma这是一场现场活动,需要提前注册。主题:将你的无结构数据与…连接起来

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消