OpenSearch-LLM智能问答版支持导入存储在OSS数据源中的数据来构建知识库,实现私有知识问答。本教程介绍如何通过OSS数据源一站式构建RAG系统。
方案概览
OpenSearch-LLM智能问答版:OpenSearch-LLM智能问答版内置数据解析与处理、切片、向量化、文本&向量检索、多模态LLM等模型和功能,提供一站式开箱即用的RAG产品,快速构建包含问答、对话、文档链接、参考图片在内的多模态对话式搜索服务,帮助企业和开发者快速搭建专属RAG系统。
对象存储 OSS:对象存储OSS是一款海量、安全、低成本的云存储服务,支持众多类型数据的存储。众多企业、开发者选择将企业内部文档、知识存储到OSS中,作为云上的高可靠数据库。与此同时,这些文档数据也是优质的素材来源,能够协助LLM基于企业内部数据,提升对话的安全性和准确性。因此,如何使用OSS中存储的企业数据,快速构建RAG系统,在企业知识库、智能客服等更好的服务员工、客户成为云上企业、开发者常见的问题。
如果您在对象存储 OSS中存储了您的企业数据,那么您可以将数据导入到OpenSearch-LLM智能问答版,快速搭建起一个RAG系统。
通过OSS数据源一站式构建RAG系统,只需3步:
创建实例:我们首先创建一个OpenSearch-LLM智能问答版实例。
导入存储在OSS中的文档:然后我们通过API将OSS数据源中的数据上传到OpenSearch-LLM智能问答版。
问答测试:最后我们登录OpenSearch-LLM智能问答版控制台对这个RAG系统进行问答效果测试。
除通过OSS数据源导入数据外,OpenSearch还支持通过控制台直接导入数据。具体请参考:通过控制台实现企业知识库问答。
前提条件
请确保您已经获取RAM用户的AccessKey ID以及AccessKey Secret,用于作为调用SDK的凭证。
说明AccessKey Secret只在创建时显示,不支持查看。
请确保代码运行环境设置了环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具体配置方法,请参考:在Linux、macOS和Windows系统配置环境变量。
创建实例
创建OpenSearch-LLM智能问答版实例:进入OpenSearch LLM智能问答版售卖页,按需求购买实例。
导入数据
登录OSS控制台,单击您的bucket名称进入文件列表,选择需要上传的文件后单击导出URL列表,获取存储在OSS中文档的URL链接。
安装所需依赖,本文以Maven工程为例,要在Maven工程中使用OpenSearch Java SDK,只需在pom.xml中加入相应依赖即可。
<dependency> <groupId>com.aliyun.opensearch</groupId> <artifactId>aliyun-sdk-opensearch</artifactId> <version>6.0.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.6.0</version> </dependency <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency
通过SDK上传文档,您可以通过以下示例代码导入存储在OSS中的文档,API详情参考:PushKnowledgeDocuments-文档推送。
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Base64; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.aliyun.opensearch.OpenSearchClient; import com.aliyun.opensearch.sdk.generated.OpenSearch; import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException; import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException; import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult; public class pushOSS { private static String appName = "test"; //填入您的实例名称 private static String host = "http://opensearch-cn-shanghai.aliyuncs.com"; //流量服务接入地址 private static String path = "/apps/%s/actions/knowledge-bulk"; //API接口 public static void main(String[] args) throws IOException { //用户识别信息 //从环境变量读取配置的AccessKey ID和AccessKey Secret,运行代码示例前必须先配置环境变量 String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); String appPath = String.format(path, appName); //创建并构造OpenSearch对象 OpenSearch openSearch = new OpenSearch(accesskey, secret, host); //创建OpenSearchClient对象,并以OpenSearch对象作为构造参数 OpenSearchClient openSearchClient = new OpenSearchClient(openSearch); //单个doc构建 JSONObject oneRequest = new JSONObject(); oneRequest.put("cmd", "URL"); //上传OSS文档,cmd为URL JSONObject fields = new JSONObject(); fields.put("id", "1"); //文档ID,唯一不重复。 fields.put("title", "xxx.html"); //(选填)文件名 fields.put("url", "https://xxx.oss-cn-beijing.aliyuncs.com/xxx.html"); //(必填)文档链接 fields.put("content","https://xxx.oss-cn-beijing.aliyuncs.com/xxx.html"); //(必填)文档内容,填入URL链接 oneRequest.put("fields",fields); //可以同时添加多条数据 final JSONArray request = new JSONArray(); request.add(oneRequest); //request.add(twoRequest); Map<String, String> params = new HashMap<String, String>() {{ put("format", "full_json"); put("_POST_BODY", request.toString()); }}; try { OpenSearchResult openSearchResult = openSearchClient.callAndDecodeResult(appPath, params, "POST"); //打印返回结果 System.out.println(openSearchResult.getResult()); } catch (OpenSearchException e) { e.printStackTrace(); } catch (OpenSearchClientException e) { e.printStackTrace(); } } }
问答测试
登录OpenSearch-LLM智能问答版控制台,单击操作栏下的管理按钮进入实例详情界面,在左侧导航栏选择配置中心->数据配置,可查看已导入的文档。
在左侧导航栏选择问答测试,即可调整问答参数并测试问答效果。
效果预览
总结
至此,您已完成了OSS数据源文档的导入以及RAG系统的搭建,后续只要将OpenSearch相应的接口接入到业务中,就可以支持企业知识库、智能文档、电商导购、教育问答等多种多样的场景。
了解更多LLM智能问答版内容,可参考:https://www.aliyun.com/activity/bigdata/opensearch/llmsearch
如有其它关于RAG系统或数据构建的相关问题,欢迎加入OpenSearch-LLM智能问答版钉钉支持群,了解更多技术细节和使用详情。