ruoyi-admin/src/main/java/org/ruoyi/controller/IndexController.java
@@ -20,7 +20,7 @@ */ @GetMapping("/") public String index() { return "index.html"; return "RuoYi-AI å¯å¨æåï¼"; } @GetMapping("/success") ruoyi-admin/src/main/resources/application-dev.yml
@@ -27,7 +27,8 @@ driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://43.139.70.230:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: ruoyi-ai password: xx password: eCaZ278N62k6fhYj hikari: # æå¤§è¿æ¥æ± æ°é ruoyi-admin/src/main/resources/static/.gitignore
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/.nojekyll
ruoyi-admin/src/main/resources/static/CNAME
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/README.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/_coverpage.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/_footer.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/_navbar.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/_sidebar.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/add_group.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/blacklist.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/column.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/contribution.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/demo_system.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/pr.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/user_register.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/common/video.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/index.html
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/_sidebar.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/common_func.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/component_use.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/content_copy.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dev_norm.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/dict_use.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/exception_handling.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/icon_use.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/page_cache.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/param_use.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/permissions_use.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/request_process.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/devdoc/router_use.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/plus-ui/home.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/_sidebar.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/api_encrypt.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/bean_null.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/deploy_vue.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/domestic_databases.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/dubbo_ip.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/https_config.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/identify_fail.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/import_excel.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/jar_run_fail.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/jce_cannot.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/kinfe4j.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/login_step.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/lombok.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/nacos_naming_instance_metadata.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/nacos_read_fail.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/only_one_subscriber.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/parse_exception.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/permission_denied.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/read_metadata.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/sentinel_404.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/st_not_support.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/swagger.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/synchronous_update.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/use_druid.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/questions/use_tomcat.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/_sidebar.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/changlog.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/elk.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/es.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/kafka.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/maxkey.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/nacos.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/prometheus_grafana.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rabbitmq.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/rocketmq.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/shardingproxy.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/extend-function/skywalking.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/architecture_diagram.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/collaboration.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/doc.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/i18n.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/inner_authentication.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/new_module.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_package_name.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/association/update_url.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/client.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/code_generate.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/export.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/import.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/oss.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/page.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/param_check.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/permissions_control.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/router_release.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/social.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/tenant.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/basic/user.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/about_join.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/key.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/test.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/explain/transaction.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/api_encrypt.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/dynamic_datasource.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/encrypt.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/idempotent.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/mail.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sensitive.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sms.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/sse.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/translation.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/extend/websocket.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/framework/tree.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/home.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/1.Xinit.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/deploy.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/extend_project.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/idea_environment.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/power_job_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/snail_job_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-cloud-plus/quickstart/worker_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/_sidebar.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/changlog.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/architecture_diagram.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/doc.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/i18n.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/new_module.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_package_name.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/association/update_url.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/client.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/code_generate.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/export.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/import.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/interface_release.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/oss.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/page.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/param_check.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/permissions_control.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/social.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/tenant.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/basic/user.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/about_join.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/key.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/test.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/explain/transaction.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/api_encrypt.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/dynamic_datasource.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/encrypt.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/idempotent.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/mail.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/maxkey.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sensitive.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/skywalking.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sms.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/sse.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/topiam.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/translation.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/extend/websocket.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/framework/tree.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/home.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/4.Xinit.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/5.Xnew.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/admin_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/deploy.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/extend_project.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/idea_environment.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/power_job_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/snail_job_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/worker_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/ruoyi-vue-plus/quickstart/xxl_job_init.md
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/css/vue.css
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/image/favicon.icoBinary files differ
ruoyi-admin/src/main/resources/static/static/image/logo.pngBinary files differ
ruoyi-admin/src/main/resources/static/static/image/ruoyicloudplus.pngBinary files differ
ruoyi-admin/src/main/resources/static/static/image/ruoyivueplus.pngBinary files differ
ruoyi-admin/src/main/resources/static/static/js/docsify-copy-code.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/docsify-footer.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/docsify-pagination.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/docsify-scroll-to-top.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/docsify.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/emoji.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/prism-bash.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/prism-typescript.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/search.min.js
ÎļþÒÑɾ³ý ruoyi-admin/src/main/resources/static/static/js/zoom-image.min.js
ÎļþÒÑɾ³ý ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/MilvusVectorStore.java
@@ -239,7 +239,7 @@ List<List<Float>> vectorFloatList = new ArrayList<>(); List<String> kidList = new ArrayList<>(); List<String> docIdList = new ArrayList<>(); for (int i = 0; i < chunkList.size(); i++) { for (int i = 0; i < Math.min(chunkList.size(), vectorList.size()); i++) { List<Double> vector = vectorList.get(i); List<Float> vfList = new ArrayList<>(); for (int j = 0; j < vector.size(); j++) { ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/WeaviateVectorStore.java
@@ -40,7 +40,7 @@ @Service @Slf4j public class WeaviateVectorStore implements VectorStore{ public class WeaviateVectorStore implements VectorStore { private volatile String protocol; private volatile String host; @@ -56,18 +56,18 @@ @PostConstruct public void loadConfig() { this.protocol = configService.getConfigValue("weaviate", "protocol"); this.protocol = configService.getConfigValue("weaviate", "protocol"); this.host = configService.getConfigValue("weaviate", "host"); this.className = configService.getConfigValue("weaviate", "classname"); } public WeaviateClient getClient(){ public WeaviateClient getClient() { Config config = new Config(protocol, host); WeaviateClient client = new WeaviateClient(config); return client; } public Result<Meta> getMeta(){ public Result<Meta> getMeta() { WeaviateClient client = getClient(); Result<Meta> meta = client.misc().metaGetter().run(); if (meta.getError() == null) { @@ -80,114 +80,135 @@ return meta; } public Result<Schema> getSchemas(){ public Result<Schema> getSchemas() { WeaviateClient client = getClient(); Result<Schema> result = client.schema().getter().run(); if (result.hasErrors()) { System.out.println(result.getError()); }else { } else { System.out.println(result.getResult()); } return result; } public Result<Boolean> createSchema(String kid){ public Result<Boolean> createSchema(String kid) { WeaviateClient client = getClient(); VectorIndexConfig vectorIndexConfig = VectorIndexConfig.builder() .distance("cosine") .cleanupIntervalSeconds(300) .efConstruction(128) .maxConnections(64) .vectorCacheMaxObjects(500000L) .ef(-1) .skip(false) .dynamicEfFactor(8) .dynamicEfMax(500) .dynamicEfMin(100) .flatSearchCutoff(40000) .build(); .distance("cosine") .cleanupIntervalSeconds(300) .efConstruction(128) .maxConnections(64) .vectorCacheMaxObjects(500000L) .ef(-1) .skip(false) .dynamicEfFactor(8) .dynamicEfMax(500) .dynamicEfMin(100) .flatSearchCutoff(40000) .build(); ShardingConfig shardingConfig = ShardingConfig.builder() .desiredCount(3) .desiredVirtualCount(128) .function("murmur3") .key("_id") .strategy("hash") .virtualPerPhysical(128) .build(); .desiredCount(3) .desiredVirtualCount(128) .function("murmur3") .key("_id") .strategy("hash") .virtualPerPhysical(128) .build(); ReplicationConfig replicationConfig = ReplicationConfig.builder() .factor(1) .build(); .factor(1) .build(); JSONObject classModuleConfigValue = new JSONObject(); classModuleConfigValue.put("vectorizeClassName",false); classModuleConfigValue.put("vectorizeClassName", false); JSONObject classModuleConfig = new JSONObject(); classModuleConfig.put("text2vec-transformers",classModuleConfigValue); classModuleConfig.put("text2vec-transformers", classModuleConfigValue); JSONObject propertyModuleConfigValueSkipTrue = new JSONObject(); propertyModuleConfigValueSkipTrue.put("vectorizePropertyName",false); propertyModuleConfigValueSkipTrue.put("skip",true); propertyModuleConfigValueSkipTrue.put("vectorizePropertyName", false); propertyModuleConfigValueSkipTrue.put("skip", true); JSONObject propertyModuleConfigSkipTrue = new JSONObject(); propertyModuleConfigSkipTrue.put("text2vec-transformers",propertyModuleConfigValueSkipTrue); propertyModuleConfigSkipTrue.put("text2vec-transformers", propertyModuleConfigValueSkipTrue); JSONObject propertyModuleConfigValueSkipFalse = new JSONObject(); propertyModuleConfigValueSkipFalse.put("vectorizePropertyName",false); propertyModuleConfigValueSkipFalse.put("skip",false); propertyModuleConfigValueSkipFalse.put("vectorizePropertyName", false); propertyModuleConfigValueSkipFalse.put("skip", false); JSONObject propertyModuleConfigSkipFalse = new JSONObject(); propertyModuleConfigSkipFalse.put("text2vec-transformers",propertyModuleConfigValueSkipFalse); propertyModuleConfigSkipFalse.put("text2vec-transformers", propertyModuleConfigValueSkipFalse); WeaviateClass clazz = WeaviateClass.builder() .className(className + kid) .description("local knowledge") .vectorIndexType("hnsw") .vectorizer("text2vec-transformers") .shardingConfig(shardingConfig) .vectorIndexConfig(vectorIndexConfig) .replicationConfig(replicationConfig) .moduleConfig(classModuleConfig) .properties(new ArrayList() {{ add(Property.builder() .dataType(new ArrayList(){ { add(DataType.TEXT); } }) .name("content") .description("The content of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipFalse) .build()); add(Property.builder() .dataType(new ArrayList(){ { add(DataType.TEXT); } }) .name("kid") .description("The knowledge id of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); add(Property.builder() .dataType(new ArrayList(){ { add(DataType.TEXT); } }) .name("docId") .description("The doc id of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); add(Property.builder() .dataType(new ArrayList(){ { add(DataType.TEXT); } }) .name("fid") .description("The fragment id of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); add(Property.builder() .dataType(new ArrayList(){ { add(DataType.TEXT); } }) .name("uuid") .description("The uuid id of the local knowledge fragment(same with id properties),for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); } }) .build(); .className(className + kid) .description("local knowledge") .vectorIndexType("hnsw") .vectorizer("text2vec-transformers") .shardingConfig(shardingConfig) .vectorIndexConfig(vectorIndexConfig) .replicationConfig(replicationConfig) .moduleConfig(classModuleConfig) .properties(new ArrayList() { { add(Property.builder() .dataType(new ArrayList() { { add(DataType.TEXT); } }) .name("content") .description("The content of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipFalse) .build()); add(Property.builder() .dataType(new ArrayList() { { add(DataType.TEXT); } }) .name("kid") .description("The knowledge id of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); add(Property.builder() .dataType(new ArrayList() { { add(DataType.TEXT); } }) .name("docId") .description("The doc id of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); add(Property.builder() .dataType(new ArrayList() { { add(DataType.TEXT); } }) .name("fid") .description("The fragment id of the local knowledge,for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); add(Property.builder() .dataType(new ArrayList() { { add(DataType.TEXT); } }) .name("uuid") .description("The uuid id of the local knowledge fragment(same with id properties),for search") .moduleConfig(propertyModuleConfigSkipTrue) .build()); } }) .build(); Result<Boolean> result = client.schema().classCreator().withClass(clazz).run(); if (result.hasErrors()) { System.out.println(result.getError()); } System.out.println(result.getResult()); return result; return result; } @Override @@ -201,7 +222,7 @@ WeaviateClient client = getClient(); Field fieldId = Field.builder().name("uuid").build(); WhereFilter where = WhereFilter.builder() .path(new String[]{ "fid" }) .path(new String[]{"fid"}) .operator(Operator.Equal) .valueString(fid) .build(); @@ -210,10 +231,10 @@ .withFields(fieldId) .withWhere(where) .run(); LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); for (LinkedTreeMap linkedTreeMap : m){ for (LinkedTreeMap linkedTreeMap : m) { String uuid = linkedTreeMap.get("uuid").toString(); resultList.add(uuid); } @@ -227,59 +248,59 @@ } @Override public void storeEmbeddings(List<String> chunkList, List<List<Double>> vectorList,String kid, String docId,List<String> fidList) { public void storeEmbeddings(List<String> chunkList, List<List<Double>> vectorList, String kid, String docId, List<String> fidList) { WeaviateClient client = getClient(); if (vectorList != null) { for (int i = 0; i < Math.min(chunkList.size(), vectorList.size()); i++) { List<Double> vector = vectorList.get(i); Float[] vf = vector.stream().map(Double::floatValue).toArray(Float[]::new); Map<String, Object> dataSchema = new HashMap<>(); dataSchema.put("content", chunkList.get(i)); dataSchema.put("kid", kid); dataSchema.put("docId", docId); dataSchema.put("fid", fidList.get(i)); String uuid = UUID.randomUUID().toString(); dataSchema.put("uuid", uuid); for (int i = 0; i < Math.min(chunkList.size(), vectorList.size()); i++) { List<Double> vector = vectorList.get(i); Float[] vf = vector.stream().map(Double::floatValue).toArray(Float[]::new); Result<WeaviateObject> result = client.data().creator() .withClassName(className + kid) .withID(uuid) .withVector(vf) .withProperties(dataSchema) .run(); } Map<String, Object> dataSchema = new HashMap<>(); dataSchema.put("content", chunkList.get(i)); dataSchema.put("kid", kid); dataSchema.put("docId", docId); dataSchema.put("fid", fidList.get(i)); String uuid = UUID.randomUUID().toString(); dataSchema.put("uuid", uuid); Result<WeaviateObject> result = client.data().creator() .withClassName(className + kid) .withID(uuid) .withVector(vf) .withProperties(dataSchema) .run(); } } @Override public void removeByDocId(String kid,String docId) { public void removeByDocId(String kid, String docId) { List<String> resultList = new ArrayList<>(); WeaviateClient client = getClient(); Field fieldId = Field.builder().name("uuid").build(); WhereFilter where = WhereFilter.builder() .path(new String[]{ "docId" }) .operator(Operator.Equal) .valueString(docId) .build(); .path(new String[]{"docId"}) .operator(Operator.Equal) .valueString(docId) .build(); Result<GraphQLResponse> result = client.graphQL().get() .withClassName(className + kid) .withFields(fieldId) .withWhere(where) .run(); LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); .withClassName(className + kid) .withFields(fieldId) .withWhere(where) .run(); LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); for (LinkedTreeMap linkedTreeMap : m){ for (LinkedTreeMap linkedTreeMap : m) { String uuid = linkedTreeMap.get("uuid").toString(); resultList.add(uuid); } for (String uuid : resultList) { Result<Boolean> deleteResult = client.data().deleter() .withID(uuid) .withClassName(className + kid) .withConsistencyLevel(ConsistencyLevel.ALL) // default QUORUM .run(); .withID(uuid) .withClassName(className + kid) .withConsistencyLevel(ConsistencyLevel.ALL) // default QUORUM .run(); } } @@ -289,15 +310,15 @@ Result<Boolean> result = client.schema().classDeleter().withClassName(className + kid).run(); if (result.hasErrors()) { System.out.println("å é¤schema失败" + result.getError()); }else { } else { System.out.println("å é¤schemaæå" + result.getResult()); } log.info("drop schema by kid, result = {}",result); log.info("drop schema by kid, result = {}", result); } @Override public List<String> nearest(List<Double> queryVector,String kid) { if (StringUtils.isBlank(kid)){ public List<String> nearest(List<Double> queryVector, String kid) { if (StringUtils.isBlank(kid)) { return new ArrayList<String>(); } List<String> resultList = new ArrayList<>(); @@ -320,14 +341,14 @@ KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid)); Result<GraphQLResponse> result = client.graphQL().get() .withClassName(className + kid) .withFields(contentField,_additional) .withFields(contentField, _additional) .withNearVector(nearVector) .withLimit(knowledgeInfoVo.getRetrieveLimit()) .run(); LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); for (LinkedTreeMap linkedTreeMap : m){ for (LinkedTreeMap linkedTreeMap : m) { String content = linkedTreeMap.get("content").toString(); resultList.add(content); } @@ -335,8 +356,8 @@ } @Override public List<String> nearest(String query,String kid) { if (StringUtils.isBlank(kid)){ public List<String> nearest(String query, String kid) { if (StringUtils.isBlank(kid)) { return new ArrayList<String>(); } List<String> resultList = new ArrayList<>(); @@ -348,20 +369,20 @@ Field.builder().name("distance").build() }).build(); NearTextArgument nearText = client.graphQL().arguments().nearTextArgBuilder() .concepts(new String[]{ query }) .concepts(new String[]{query}) .distance(1.6f) // certainty = 1f - distance /2f .build(); KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid)); Result<GraphQLResponse> result = client.graphQL().get() .withClassName(className + kid) .withFields(contentField,_additional) .withFields(contentField, _additional) .withNearText(nearText) .withLimit(knowledgeInfoVo.getRetrieveLimit()) .run(); LinkedTreeMap<String,Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String,ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); LinkedTreeMap<String, Object> t = (LinkedTreeMap<String, Object>) result.getResult().getData(); LinkedTreeMap<String, ArrayList<LinkedTreeMap>> l = (LinkedTreeMap<String, ArrayList<LinkedTreeMap>>) t.get("Get"); ArrayList<LinkedTreeMap> m = l.get(className + kid); for (LinkedTreeMap linkedTreeMap : m){ for (LinkedTreeMap linkedTreeMap : m) { String content = linkedTreeMap.get("content").toString(); resultList.add(content); } @@ -370,10 +391,10 @@ public Result<Boolean> deleteSchema(String kid) { WeaviateClient client = getClient(); Result<Boolean> result = client.schema().classDeleter().withClassName(className+ kid).run(); Result<Boolean> result = client.schema().classDeleter().withClassName(className + kid).run(); if (result.hasErrors()) { System.out.println(result.getError()); }else { } else { System.out.println(result.getResult()); } return result;