前言
什么是 Azure OpenAI 服务?
Azure OpenAI 服务提供对 OpenAI 强大语言模型的 REST API 访问,这些模型包括 GPT-4、GPT-35-Turbo 和嵌入模型系列。 此外,新的 GPT-4 和 gpt-35-turbo 模型系列现已正式发布。 这些模型可以轻松适应特定的任务,包括但不限于内容生成、汇总、语义搜索和自然语言到代码的转换。 用户可以通过 REST API、Python SDK 或 Azure OpenAI Studio 中基于 Web 的界面访问该服务。
官方文档地址:https://learn.microsoft.com/zh-cn/azure/ai-services/openai/overview
什么是 Milvus 数据库?
Milvus 创建于 2019 年,其目标只有一个:存储、索引和管理由深度神经网络和其他机器学习 (ML) 模型生成的大量嵌入向量。
作为专门设计用于处理对输入向量的查询的数据库,它能够以万亿级对向量进行索引。与现有关系
数据库主要按照预定义模式处理结构化数据不同,Milvus 是自下而上设计的,用于处理从非结构化数据转换的嵌入向量。
随着互联网的发展和发展,非结构化数据变得越来越普遍,包括电子邮件、论文、物联网传感器数据、Facebook 照片、蛋白质结构等等。为了使计算机理解和处理非结构化数据,使用嵌入技术将这些数据转换为向量。Milvus 存储并索引这些向量。Milvus 能够通过计算两个向量的相似距离来分析它们之间的相关性。如果两个嵌入向量非常相似,则意味着原始数据源也相似。
官方文档地址:https://milvus.io/docs/overview.md
环境背景:
Windows 10、Java 17
好了不多BB,正文开始!
第一步 安装Milvus 单例
1.安装 docker
docker安装时会检查WSL,如果报错太老直接PowerShell(管理员权限)运行
wsl --update
2.新建文件夹-milvus
3.下载yml配置文件
wget https://github.com/milvus-io/milvus/releases/download/v2.3.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
4.docker执行配置文件
docker compose up -d
最后在docker里面检查是否成功启动即可
PS:
1.默认是没有用户和密码
2.携带一个default数据库
3.端口为19530或者9091
当然你也可以自己修改,参照官方文档即可
第二步 maven引入Milvus SDK 和 Azure Open AI SDK
<dependency>
<groupId>io.milvus</groupId>
<artifactId>milvus-sdk-java</artifactId>
<version>2.3.1</version>
<!-- 不需要排除slf4j的删除即可 -->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-openai</artifactId>
<version>${azureopenai.version}</version>
</dependency>
第三步 编写测试类
String sqlUrl = ""; //数据库地址
String sqlUser = ""; //数据库用户
String sqlPassword = ""; //数据库用户密码
// 生成
OpenAIClient azureClient = new OpenAIClientBuilder()
.endpoint("你的地址")
.credential(new AzureKeyCredential("你的应用key"))
.retryPolicy(new RetryPolicy("MINUTES", ChronoUnit.MINUTES)) // 重试策略
.buildClient();
// 连接Milvus
final MilvusServiceClient milvusClient = new MilvusServiceClient(
ConnectParam.newBuilder()
.withUri(sqlUrl)
.withAuthorization(sqlUser, sqlPassword)
.build());
System.out.println("连接DB: " + sqlUrl);
// 检查向量集合表是否存在
String collectionName = "test1"; // 你的集合名称
R<DescribeCollectionResponse> responseR = milvusClient.describeCollection(DescribeCollectionParam.newBuilder().withCollectionName(collectionName).build(