diff --git a/content/docs-lite/zh/docs/DataVec/DataVec-Overview.md b/content/docs-lite/zh/docs/DataVec/DataVec-Overview.md index a365f130a5e28577454264f85f5637a98c5c029e..5a38642e6f3b34122778a0575395db719d87bb2a 100644 --- a/content/docs-lite/zh/docs/DataVec/DataVec-Overview.md +++ b/content/docs-lite/zh/docs/DataVec/DataVec-Overview.md @@ -10,7 +10,7 @@ DataVec向量数据库可通过[容器镜像安装](../InstallationGuide/容器 DataVec能够无缝对接自研大模型。通过嵌入技术将非结构化数据(如文本、图像等)转换为向量数据,DataVec为之提供存储和检索能力。嵌入是一种将非结构化数据映射到向量空间的技术,使得相似文本、图像在向量空间中的距离相近,从而提高检索的准确性和效率。 -此外,DataVec还支持鲲鹏指令集加速,实现毫秒级响应。鲲鹏指令集是华为自主研发的一套高性能计算指令集,能够显著提升数据处理和计算的效率。通过利用鲲鹏指令集,DataVec可以在处理大规模向量数据时,提供更快的想用速度和更高的处理能力。 +此外,DataVec还支持鲲鹏指令集加速,实现毫秒级响应。鲲鹏指令集是华为自主研发的一套高性能计算指令集,能够显著提升数据处理和计算的效率。通过利用鲲鹏指令集,DataVec可以在处理大规模向量数据时,提供更快的响应速度和更高的处理能力。 在实际应用中,DataVec可以广泛应用于各种需要高效向量检索的场景。例如,在推荐系统中,DataVec可以根据用户的历史行为和偏好,快速找到与用户兴趣相似的内容,从而提供个性化的推荐。在图像检索中,DataVec可以通过图像特征向量,快速找到与查询图像相似的图片。在自然语言处理(NLP)中,DataVec可以通过文本嵌入,快速找到与查询文本语义相似的文档。 diff --git a/content/docs-lite/zh/docs/DataVec/DataVec-architecture.md b/content/docs-lite/zh/docs/DataVec/DataVec-architecture.md index 7de6956b8c5a30b627fc3cd2615ddebcdd25dd51..4457221a0b50c5db311748c7bc2ab8fbea1e8f70 100644 --- a/content/docs-lite/zh/docs/DataVec/DataVec-architecture.md +++ b/content/docs-lite/zh/docs/DataVec/DataVec-architecture.md @@ -55,7 +55,7 @@ openGauss DataVec 深度结合鲲鹏硬件,通过量化压缩算法、Rerank #### 向量指令集加速 -具体来说,鲲鹏指令集包括一系列优化的指令,如NENO指令和内联汇编,这些指令能够加速向量运算、数据预取和流水线处理。通过利用鲲鹏处理器的硬件加速特性和优化的指令集,ANN算法能够在处理大规模数据集时显著提高性能和效率。 +具体来说,鲲鹏指令集包括一系列优化的指令,如NEON指令和内联汇编,这些指令能够加速向量运算、数据预取和流水线处理。通过利用鲲鹏处理器的硬件加速特性和优化的指令集,ANN算法能够在处理大规模数据集时显著提高性能和效率。 ## 标量向量混合查询 DataVec还能够同时处理标量数据(如数值、类别)和向量数据(如文本、音视频)。这种混合查询的支持使得用户可以在同一个查询中结合不同类型的数据,从而实现更复杂和精细的分析。 diff --git a/content/docs-lite/zh/docs/DataVec/DataVec-integrations.md b/content/docs-lite/zh/docs/DataVec/DataVec-integrations.md index ba4eac43631e4b74ccdf532525dc250fc31b5aff..d13b3a65a22a9721512e5b88e6632b26731da923 100644 --- a/content/docs-lite/zh/docs/DataVec/DataVec-integrations.md +++ b/content/docs-lite/zh/docs/DataVec/DataVec-integrations.md @@ -20,3 +20,7 @@ openGauss DataVec提供多种第三方组件的集成教程,并通过多语言 - [Java](integrationJava.md) - [Node.js](integrationJavaScript.md) - [Go](integrationGo.md) + +## 性能测试 +- [VectorDBBench](openGauss-VectorDBBench.md) +- [AnnBenchmark](testtool_annbenchmark.md) \ No newline at end of file diff --git "a/content/docs-lite/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" "b/content/docs-lite/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" index bc19ac6f335d296d9973828b94c81e038f02eae6..189826e88d2c4d9065df7787324e179215c046bc 100644 --- "a/content/docs-lite/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" +++ "b/content/docs-lite/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" @@ -212,7 +212,7 @@ conn.commit() ### 查询检索 我们尝试询问如下问题: -```abap +```shell question = "openGauss 发布了哪些版本?" ``` @@ -235,14 +235,14 @@ conn.close() 查询结果如下: -```abap +```shell [(' 3. openGauss 有哪些版本?\n\nopenGauss 社区每两年发布一个 LTS 版本,LTS 版本作为长期支持版本,可规模上线使用。半年发布一个创新版本,创新版本供用户联创测试使用;涉及重大问题修复时,会按需发布补丁版本。同时按照不同场景分为以下版本:\n\n1. openGauss 企业版:具备更齐全的集群管理功能,适合企业用户;\n2. openGauss 极简版:安装配置简单,解压可用,适合个人开发者;\n3. openGauss 轻量版:精简功能,缩减安装包大小,内存占用更少;\n4. openGauss 分布式镜像:基于 ShardingSphere 和 k8s 的分布式容器化镜像。\n\n详情参考 openGauss 官网[“学习”->“文档”](https://docs-opengauss.osinfra.cn)区域。\n\n',)] ``` ### 结合LLM实现RAG 首先,为对比RAG前后效果,我们直接询问大模型得到如下答案,结果并不理想: -```abap +```shell 嗯,我现在想了解一下 openGauss 有哪些发布版本。我之前对这个软件不太熟悉,但听说它是一个用于关系型数据库的高可用性云原生解决方案,可能和 PostgreSQL 类似。首先,我应该确认一下什么是 openGauss,它的主要用途是什么,以及它在市场上的地位。 然后,关于发布版本的部分,用户想知道有哪些具体的版本号。我记得有时候软件会有主版本(major version)和次版本(minor version),还有内部版本(微内核)。例如,PostgreSQL 的版本通常以 9.x、10.x 这样的命名,所以 openGauss 可能也有类似的结构。 @@ -256,7 +256,7 @@ conn.close() 借助openGauss检索结果作为上下文,将文档进行格式化处理,并为大模型制定PROMPT: -```abap +```shell context = "\n".join(row[0] for row in rows) SYSTEM_PROMPT = "你作为一个对话 AI 助手,结合上下文信息简练高效的回答用户提出的问题" @@ -265,7 +265,7 @@ USER_PROMPT = f"请结合{context}信息来回答{question}的问题,不需要 基于ollama平台,我们采用**deepseek-r1**大模型进行知识问答: -```abap +```shell response: ChatResponse = chat( model="deepseek-r1", messages=[ @@ -277,7 +277,7 @@ response: ChatResponse = chat( print(response["message"]["content"]) ``` -```abap +```shell 好的,我现在要解决用户关于openGauss发布版本的问题。根据提供的上下文信息,openGauss每两年发布一个LTS版本,并且半年发布创新版本,当有重大问题修复时会发布补丁版本。 diff --git a/content/docs-lite/zh/docs/DataVec/openGauss-VectorDBBench.md b/content/docs-lite/zh/docs/DataVec/openGauss-VectorDBBench.md new file mode 100644 index 0000000000000000000000000000000000000000..3ff2714d5e15f7bd239edc76f8434a91af079a37 --- /dev/null +++ b/content/docs-lite/zh/docs/DataVec/openGauss-VectorDBBench.md @@ -0,0 +1,104 @@ +# 使用VectorDBBench工具性能测试 +VectorDBBench 是一款开源向量数据库基准测试工具,主要通过测量关键指标来衡量向量数据库的性能。 +本文介绍如何使用VectorDBBench工具对openGauss中Datavec向量引擎进行性能测试。 + +### 安装python3 +推荐安装Python3.11以上版本 +```bash +wget --no-check-certificate https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz +tar -xvf Python-3.11.0.tar.xz +cd Python-3.11.0 + +# 为用户自定义的python安装路径 +./configure --prefix= --enable-optimizations +make -j; make install +``` +设置python3环境变量 +```bash +vim ~/.bashrc +export PATH=/bin:$PATH +source ~/.bashrc +``` +### 安装vectordb-bench +```bash +pip3 install vectordb-bench[all] +``` +替换适配opengauss的vectordb-bench文件夹 +```bash +# 下载适配opengauss的vectordb-bench:https://github.com/wlff123/VectorDBBench.git +cp -r vectordb_bench /lib/python3.11/site-packages/ +``` +### 数据集下载 +VectorDBBench工具执行测试时,会根据选择的数据集自行从网络下载,也可以手动下载。 +```bash +# cohere1m数据集下载示例 +wget https://assets.zilliz.com/benchmark/cohere_medium_1m/test.parquet --no-check-certificate +wget https://assets.zilliz.com/benchmark/cohere_medium_1m/neighbors.parquet --no-check-certificate +wget https://assets.zilliz.com/benchmark/cohere_medium_1m/shuffle_train.parquet --no-check-certificate +``` +### 配置openGauss数据库参数 +按照测试需求对数据库节点目录下postgresql.conf文件中影响性能的关键参数配置: +```bash +max_connections = 1000 # 多并发测试时此值应大于并发连接数 +shared_buffers = 16GB # 机器内存足够时,建议此值大于数据集大小 +enable_indexscan = on # 开启索引扫描 +enable_seqscan = off # 关闭全表扫描 +``` +### 性能测试 +建议使用vectordbbench命令行执行测试,可以根据测试需求灵活调整测试参数。 +```bash +# 修改数据集路径 +# vi /lib/python3.11/site-packages/vectordb_bench/__init__.py +DATASET_LOCAL_DIR = '' + +# 本地机器如果不能从网络下载数据集,执行测试可能会报错,此时可以屏蔽掉下载数据集的相关代码 +# vi /lib/python3.11/site-packages/vectordb_bench/backend/data_source.py +class AwsS3Reader(DatasetReader): + # ... + def read(self, dataset: str, files: list[str], local_ds_root: pathlib.Path): + downloads = [] + # ... + else: + for file in files: + remote_file = pathlib.PurePosixPath(self.remote_root, dataset, file) + local_file = local_ds_root.joinpath(file) + # 此处屏蔽下载数据集的代码 + # if (not local_file.exists()) or (not self.validate_file(remote_file, local_file)): + # log.info(f"local file: {local_file} not match with remote: {remote_file}; add to downloading list") + # downloads.append(remote_file) +``` +测试命令示例 +```bash +# vectordbbench opengausshnsw --case-type --k --concurrency-duration --num-concurrency --user-name --password --host --port --db-name -m --ef-construction --ef-search +# ALGORITHM 测试用例类型 +# DATASET 测试用例数据集 +# TOPK 查询最近邻结果数量 +# DURATION 查询持续时间(秒) +# CONCURRENCY_NUM 并发数量 +# USERNAME 数据库用户名 +# PASSWORD 数据库密码 +# HOST 数据库ip地址 +# PORT 数据库端口 +# M hnsw索引构建参数 +# EF_CONSTRUCTION hnsw索引构建参数 +# EF_SEARCH hnsw索引搜索参数 + +# 详细参数说明可以执行命令查看帮助 +vectordbbench opengausshnsw --help +vectordbbench opengausshnswpq --help + +# hnsw索引测试命令 +vectordbbench opengausshnsw --case-type Performance768D1M --k 10 --concurrency-duration 60 --num-concurrency 1 --user-name gaussdb --password YourPassword --host 127.0.0.1 --port 5432 --db-name postgres -m 16 --ef-construction 200 --ef-search 200 +# hnswpq索引测试命令 +vectordbbench opengausshnswpq --pq_m 96 --hnsw_earlystop_threshold 160 --case-type Performance768D1M --k 10 --concurrency-duration 60 --num-concurrency 1 --user-name gaussdb --password YourPassword --host 127.0.0.1 --port 5432 --db-name postgres -m 16 --ef-construction 200 --ef-search 200 +``` +执行测试命令后,会在当前终端中打印测试执行过程和结果 +```bash +# 测试结果示例说明 +... INFO: Performance case got result: Metric(max_load_count=0, load_duration=xxx, qps=xxx, serial_latency_p99=xxx, recall=xxx, ndcg=xxx, conc_num_list=xxx, conc_qps_list=xxx, conc_latency_p99_list=xxx, conc_latency_avg_list=xxx)... +# load_duration 导入数据和构建索引的总时间 +# qps 吞吐量 +# serial_latency_p99 单并发查询p99时延 +# recall 召回率 +# conc_latency_p99_list 多并发查询p99时延 +``` diff --git a/content/docs-lite/zh/docs/DataVec/testtool_annbenchmark.md b/content/docs-lite/zh/docs/DataVec/testtool_annbenchmark.md new file mode 100644 index 0000000000000000000000000000000000000000..3c1d828e00e51cd10ec0c85334653aeabd816598 --- /dev/null +++ b/content/docs-lite/zh/docs/DataVec/testtool_annbenchmark.md @@ -0,0 +1,110 @@ +# 向量分析性能测试-AnnBenchmark + +## 1. 准备工作 +### 测试环境 +- 安装python>=3.8.6 +- 下载适配openGauss数据库的ann-benchmark性能测试工具。下载链接:[ann-benchmarks-openGauss](https://github.com/lauraty123/ann-benchmarks-openGauss) +- 安装测试工具所需的依赖包`pip3 install -r requirements.txt` +- 部署openGauss-DataVec容器实例,教程可参考[openGauss-DataVec容器镜像安装](../InstallationGuide/容器镜像安装.md) +### 测试数据 +| Dataset | Dimensions | Train size | Test size | Neighbors | Distance | Download | +| ----------------------------------------------------------------- | ---------: | ---------: | --------: | --------: | --------- | -------------------------------------------------------------------------- | +| [DEEP1B](http://sites.skoltech.ru/compvision/noimi/) | 96 | 9,990,000 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/deep-image-96-angular.hdf5) (3.6GB) +| [Fashion-MNIST](https://github.com/zalandoresearch/fashion-mnist) | 784 | 60,000 | 10,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/fashion-mnist-784-euclidean.hdf5) (217MB) | +| [GIST](http://corpus-texmex.irisa.fr/) | 960 | 1,000,000 | 1,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/gist-960-euclidean.hdf5) (3.6GB) | +| [GloVe](http://nlp.stanford.edu/projects/glove/) | 25 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-25-angular.hdf5) (121MB) | +| GloVe | 50 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-50-angular.hdf5) (235MB) | +| GloVe | 100 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-100-angular.hdf5) (463MB) | +| GloVe | 200 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-200-angular.hdf5) (918MB) | +| [Kosarak](http://fimi.uantwerpen.be/data/) | 27,983 | 74,962 | 500 | 100 | Jaccard | [HDF5](http://ann-benchmarks.com/kosarak-jaccard.hdf5) (33MB) | +| [MNIST](http://yann.lecun.com/exdb/mnist/) | 784 | 60,000 | 10,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/mnist-784-euclidean.hdf5) (217MB) | +| [MovieLens-10M](https://grouplens.org/datasets/movielens/10m/) | 65,134 | 69,363 | 500 | 100 | Jaccard | [HDF5](http://ann-benchmarks.com/movielens10m-jaccard.hdf5) (63MB) | +| [NYTimes](https://archive.ics.uci.edu/ml/datasets/bag+of+words) | 256 | 290,000 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/nytimes-256-angular.hdf5) (301MB) | +| [SIFT](http://corpus-texmex.irisa.fr/) | 128 | 1,000,000 | 10,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/sift-128-euclidean.hdf5) (501MB) | +| [Last.fm](https://github.com/erikbern/ann-benchmarks/pull/91) | 65 | 292,385 | 50,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/lastfm-64-dot.hdf5) (135MB) | +| [COCO-I2I](https://cocodataset.org/) | 512 | 113,287 | 10,000 | 100 | Angular | [HDF5](https://github.com/fabiocarrara/str-encoders/releases/download/v0.1.3/coco-i2i-512-angular.hdf5) (136MB) | +| [COCO-T2I](https://cocodataset.org/) | 512 | 113,287 | 10,000 | 100 | Angular | [HDF5](https://github.com/fabiocarrara/str-encoders/releases/download/v0.1.3/coco-t2i-512-angular.hdf5) (136MB) | + +> 注:
+> 数据集位置:置放路径为/ann-benchmarks-openGauss/data,需要先`mkdir data`
+> 数据集下载:可以直接通过`wget`下载,例如:`wget http://ann-benchmarks.com/glove-50-angular.hdf5 --no-check-certificate` + +## 2. 测试流程 +### 数据库配置 +容器内的配置文件路径: +``` +/var/lib/opengauss/data/postgresql.conf +``` +推荐配置参数: +``` +shared_buffers=50GB #推荐大于数据库和索引的总和 +maintenance_work_mem=4GB +password_encryption_type=1 +max_connections=1000 #最大连接数 +``` +有关具体参数的修改,请参考 **[GUC参数说明](../DatabaseReference/GUC参数说明.md)** +### ann-benchmark配置 +修改`go_opgs.sh`中的数据库连接配置 +```bash +export ANN_BENCHMARKS_OG_USER='YourUserName' +export ANN_BENCHMARKS_OG_PASSWORD='YourPassword' +export ANN_BENCHMARKS_OG_DBNAME='YourDBName' +export ANN_BENCHMARKS_OG_HOST='YourHost' +export ANN_BENCHMARKS_OG_PORT=YourPort +``` +修改ann-benchmarks-openGauss/ann_benchmarks/algorithms/openGauss/config.yml中构建索引、索引查询相关参数(按需) +```bash + - base_args: ['@metric'] + constructor: openGaussHNSW + disabled: false + docker_tag: ann-benchmarks-openGauss + module: ann_benchmarks.algorithms.openGauss + name: openGauss-hnsw + run_groups: + M-16: + arg_groups: [{M: 16, efConstruction: 200}] + args: {} + query_args: [[10, 20, 40, 80, 120, 200, 400, 800]] + M-24: + arg_groups: [{M: 24, efConstruction: 200}] + args: {} + query_args: [[10, 20, 40, 80, 120, 200, 400, 800]] +``` +- name: 近似搜索算法名 +- run_groups: 索引构建和索引查询参数设置,这里的arg_groups设置的是hnsw索引构建参数m和efconstruction,query_args则是hnsw索引查询参数ef_search。 + +### 执行测试 +修改`go_opgs.sh`中的启动命令 +```bash +python3 run.py --algorithm openGauss-hnsw --dataset fashion-mnist-784-euclidean --local --runs 1 -k 10 --batch +``` +- --algorithm 算法名,这里的算法名来源于ann-benchmarks-openGauss/ann_benchmarks/algorithms/openGauss/config.yml的name字段,目前支持openGauss-hnsw、openGauss-hnswpq、openGauss-ivfflat。 +- --dataset 数据集名称,支持的数据集见准备工作的测试数据章节。 +- -- runs 执行测试集次数 +- --k topk数目 +- --batch 如果加入该参数,可以开启向量数据的并发查询 + +开启测试 +```bash +sh go_opgs.sh +``` + +> 注:
+> 若已经执行过同组测试,需要重命名或删除`ann-benchmarks-openGauss/results///`下对应的文件,否则会直接跳过改组测试。 + +## 3. 测试结果 +### 输出html可互动网页 +```bash +python3 create_website.py --outputdir --scatter --recompute +``` + +### 输出数据表格 +```bash +python3 data_export.py --out <结果文件名>.csv +``` + +测试结果说明: +- k-nn:准确率 +- qps:吞吐量 +- p99:p99时延 +- build:构建索引耗时 diff --git "a/content/docs-lite/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" "b/content/docs-lite/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" index bdfd2afa6104d79426067fdff7bb9c245c7a2837..ab1bff64f16c74e45eb3b21ea6f53dc6c17440ba 100644 --- "a/content/docs-lite/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" +++ "b/content/docs-lite/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" @@ -284,7 +284,7 @@ STATIC PROCEDURE BeginCreate( |9|varchar2| #### ADDINSTANCE -```self +```sql MEMBER PROCEDURE AddInstance( self IN OUT NOCOPY ANYDATASET); ``` diff --git "a/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" index fe0f525701e48cc2484751c30dc18bb0b66e1e1a..abc515282a64b0372b0518c12279d5de30216b2f 100644 --- "a/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" +++ "b/content/docs-lite/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -22,7 +22,7 @@ sparsevec[(d)] | (8 * 非零元素数 + 16)字节| 1~1,000,000,000
最大非 ## Vector 每个vector占用 `4 * 维度 + 8` 字节的储存空间。 -每个元素都是单精度浮点数,有效小数位约为并且所有的元素都是有限的:(不能为 `NaN`,`Infinity` 或者 `-Infinity`)。 +每个元素都是单精度浮点数,并且所有的元素都是有限的:(不能为 `NaN`,`Infinity` 或者 `-Infinity`)。 vector的最大维度为 `16,000`。 ### 格式 diff --git a/content/docs-lite/zh/menu/index.md b/content/docs-lite/zh/menu/index.md index 7a67768245c0ee6c624b246344fb2b70b2922889..dac9328f091eef99b74e716d0555cbd30fa8d6a6 100644 --- a/content/docs-lite/zh/menu/index.md +++ b/content/docs-lite/zh/menu/index.md @@ -628,23 +628,26 @@ headless: true - [向量存储引擎]({{< relref "./docs/DataVec/DataVec-architecture.md" >}}) - [PQ]({{< relref "./docs/DataVec/PQ.md" >}}) - [工具编排使用]({{< relref "./docs/DataVec/DataVec-integrations.md" >}}) - - [编排组件] + - 编排组件 - [Dify]({{< relref "./docs/DataVec/dify.md" >}}) - [AnythingLLM]({{< relref "./docs/DataVec/anythingllm.md" >}}) - - [嵌入模型] + - 嵌入模型 - [BGE-M3]({{< relref "./docs/DataVec/embedding-bgem3.md" >}}) - [Nomic]({{< relref "./docs/DataVec/embedding-nomic.md" >}}) - - [数据迁移] + - 数据迁移 - [从Milvus迁移至openGauss DataVec]({{< relref "./docs/DataVec/milvus2datavec.md" >}}) - - [API Reference]({{< relref "./docs/DataVec/integrationGo.md" >}}) + - API Reference - [Python SDK]({{< relref "./docs/DataVec/integrationPython.md" >}}) - [Java SDK]({{< relref "./docs/DataVec/integrationJava.md" >}}) - [Node.js SDK]({{< relref "./docs/DataVec/integrationJavaScript.md" >}}) - [Go SDK]({{< relref "./docs/DataVec/integrationGo.md" >}}) + - 性能测试 + - [VectorDBBench]({{< relref "./docs/DataVec/openGauss-VectorDBBench.md" >}}) + - [AnnBenchmark]({{< relref "./docs/DataVec/testtool_annbenchmark.md" >}}) - [教程案例指导]({{< relref "./docs/DataVec/DataVec-tutorials.md" >}}) - [打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手!]({{< relref "./docs/DataVec/openGauss-RAG实践.md" >}}) - [openGauss Datavec + Dify,快速搭建你的智能助手平台]({{< relref "./docs/DataVec/openGauss-Dify.md" >}}) - - [Spring Boot集成openGauss DataVec实现向量化检索]({{< relref "./docs/DataVec/openGauss-Springboot.md" >}} + - [Spring Boot集成openGauss DataVec实现向量化检索]({{< relref "./docs/DataVec/openGauss-Springboot.md" >}}) - [安全加固指南]({{< relref "./docs/SecHarden/secHarden.md" >}}) - [数据库加固概述]({{< relref "./docs/SecHarden/数据库加固概述.md" >}}) - [安全配置规范基线]({{< relref "./docs/SecHarden/安全配置规范基线.md" >}}) diff --git "a/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\346\224\257\346\214\201\344\270\273\345\244\207\345\217\202\346\225\260\345\220\214\346\255\245.md" "b/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\346\224\257\346\214\201\344\270\273\345\244\207\345\217\202\346\225\260\345\220\214\346\255\245.md" index c44f133cb2136c2c2022481875eb7a301334d887..abbf2d6c9e9dcaec40928f52a45de30a11355d7d 100644 --- "a/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\346\224\257\346\214\201\344\270\273\345\244\207\345\217\202\346\225\260\345\220\214\346\255\245.md" +++ "b/content/zh/docs/AboutopenGauss/\350\265\204\346\272\220\346\261\240\345\214\226\346\224\257\346\214\201\344\270\273\345\244\207\345\217\202\346\225\260\345\220\214\346\255\245.md" @@ -35,7 +35,7 @@ ## 基本原理 -在共享存储中维护共享配置文件,由主机写入,备机不能修改。主机在写完共享配置文件后广播同步消息给备机,备机收到同步消息后读取共享配置文件的内容,更新本地配置文件,然后通知PM进行加载。集群发生主备切换后,新主先用共享配置文件中的内容更新本地配置文件,然后再作为主机发起后续同步流程。 +在共享存储中维护共享配置文件,由主机写入,备机不能修改。主机在写完共享配置文件后广播同步消息给备机,备机收到同步消息后读取共享配置文件的内容,更新本地配置文件,然后通知postmaster线程进行加载。集群发生主备切换后,新主先用共享配置文件中的内容更新本地配置文件,然后再作为主机发起后续同步流程。 ## 使用指导 diff --git a/content/zh/docs/DataVec/DataVec-Overview.md b/content/zh/docs/DataVec/DataVec-Overview.md index 9cf43cdd83721c984ed0819d2ff3f49f6e1ee094..dc3e4071e9cabd8bd9b3d70b1f55d67f66d2398c 100644 --- a/content/zh/docs/DataVec/DataVec-Overview.md +++ b/content/zh/docs/DataVec/DataVec-Overview.md @@ -10,7 +10,7 @@ DataVec向量数据库可通过[容器镜像安装](../../../docs-lite/zh/docs/I DataVec能够无缝对接自研大模型。通过嵌入技术将非结构化数据(如文本、图像等)转换为向量数据,DataVec为之提供存储和检索能力。嵌入是一种将非结构化数据映射到向量空间的技术,使得相似文本、图像在向量空间中的距离相近,从而提高检索的准确性和效率。 -此外,DataVec还支持鲲鹏指令集加速,实现毫秒级响应。鲲鹏指令集是华为自主研发的一套高性能计算指令集,能够显著提升数据处理和计算的效率。通过利用鲲鹏指令集,DataVec可以在处理大规模向量数据时,提供更快的想用速度和更高的处理能力。 +此外,DataVec还支持鲲鹏指令集加速,实现毫秒级响应。鲲鹏指令集是华为自主研发的一套高性能计算指令集,能够显著提升数据处理和计算的效率。通过利用鲲鹏指令集,DataVec可以在处理大规模向量数据时,提供更快的响应速度和更高的处理能力。 在实际应用中,DataVec可以广泛应用于各种需要高效向量检索的场景。例如,在推荐系统中,DataVec可以根据用户的历史行为和偏好,快速找到与用户兴趣相似的内容,从而提供个性化的推荐。在图像检索中,DataVec可以通过图像特征向量,快速找到与查询图像相似的图片。在自然语言处理(NLP)中,DataVec可以通过文本嵌入,快速找到与查询文本语义相似的文档。 diff --git a/content/zh/docs/DataVec/DataVec-architecture.md b/content/zh/docs/DataVec/DataVec-architecture.md index a1f81ca8c5732131ad3883f79972850103542370..5004943c7eace5b26fe8b7077a0f588b2fcc9854 100644 --- a/content/zh/docs/DataVec/DataVec-architecture.md +++ b/content/zh/docs/DataVec/DataVec-architecture.md @@ -55,7 +55,7 @@ openGauss DataVec 深度结合鲲鹏硬件,通过量化压缩算法、Rerank ### 向量指令集加速 -具体来说,鲲鹏指令集包括一系列优化的指令,如NENO指令和内联汇编,这些指令能够加速向量运算、数据预取和流水线处理。通过利用鲲鹏处理器的硬件加速特性和优化的指令集,ANN算法能够在处理大规模数据集时显著提高性能和效率。 +具体来说,鲲鹏指令集包括一系列优化的指令,如NEON指令和内联汇编,这些指令能够加速向量运算、数据预取和流水线处理。通过利用鲲鹏处理器的硬件加速特性和优化的指令集,ANN算法能够在处理大规模数据集时显著提高性能和效率。 ## 标量向量混合查询 DataVec还能够同时处理标量数据(如数值、类别)和向量数据(如文本、音视频)。这种混合查询的支持使得用户可以在同一个查询中结合不同类型的数据,从而实现更复杂和精细的分析。 diff --git a/content/zh/docs/DataVec/DataVec-integrations.md b/content/zh/docs/DataVec/DataVec-integrations.md index 8d5786adcd82ef1c0e8bff363dc704f5b76c42f3..09f592a254985b79beed78382a801b692b43290c 100644 --- a/content/zh/docs/DataVec/DataVec-integrations.md +++ b/content/zh/docs/DataVec/DataVec-integrations.md @@ -21,3 +21,7 @@ openGauss DataVec提供多种第三方组件的集成教程,并通过多语言 - [Node.js](integrationJavaScript.md) - [Go](integrationGo.md) +## 性能测试 +- [VectorDBBench](openGauss-VectorDBBench.md) +- [AnnBenchmark](testtool_annbenchmark.md) + diff --git "a/content/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" "b/content/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" index bc19ac6f335d296d9973828b94c81e038f02eae6..189826e88d2c4d9065df7787324e179215c046bc 100644 --- "a/content/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" +++ "b/content/zh/docs/DataVec/openGauss-RAG\345\256\236\350\267\265.md" @@ -212,7 +212,7 @@ conn.commit() ### 查询检索 我们尝试询问如下问题: -```abap +```shell question = "openGauss 发布了哪些版本?" ``` @@ -235,14 +235,14 @@ conn.close() 查询结果如下: -```abap +```shell [(' 3. openGauss 有哪些版本?\n\nopenGauss 社区每两年发布一个 LTS 版本,LTS 版本作为长期支持版本,可规模上线使用。半年发布一个创新版本,创新版本供用户联创测试使用;涉及重大问题修复时,会按需发布补丁版本。同时按照不同场景分为以下版本:\n\n1. openGauss 企业版:具备更齐全的集群管理功能,适合企业用户;\n2. openGauss 极简版:安装配置简单,解压可用,适合个人开发者;\n3. openGauss 轻量版:精简功能,缩减安装包大小,内存占用更少;\n4. openGauss 分布式镜像:基于 ShardingSphere 和 k8s 的分布式容器化镜像。\n\n详情参考 openGauss 官网[“学习”->“文档”](https://docs-opengauss.osinfra.cn)区域。\n\n',)] ``` ### 结合LLM实现RAG 首先,为对比RAG前后效果,我们直接询问大模型得到如下答案,结果并不理想: -```abap +```shell 嗯,我现在想了解一下 openGauss 有哪些发布版本。我之前对这个软件不太熟悉,但听说它是一个用于关系型数据库的高可用性云原生解决方案,可能和 PostgreSQL 类似。首先,我应该确认一下什么是 openGauss,它的主要用途是什么,以及它在市场上的地位。 然后,关于发布版本的部分,用户想知道有哪些具体的版本号。我记得有时候软件会有主版本(major version)和次版本(minor version),还有内部版本(微内核)。例如,PostgreSQL 的版本通常以 9.x、10.x 这样的命名,所以 openGauss 可能也有类似的结构。 @@ -256,7 +256,7 @@ conn.close() 借助openGauss检索结果作为上下文,将文档进行格式化处理,并为大模型制定PROMPT: -```abap +```shell context = "\n".join(row[0] for row in rows) SYSTEM_PROMPT = "你作为一个对话 AI 助手,结合上下文信息简练高效的回答用户提出的问题" @@ -265,7 +265,7 @@ USER_PROMPT = f"请结合{context}信息来回答{question}的问题,不需要 基于ollama平台,我们采用**deepseek-r1**大模型进行知识问答: -```abap +```shell response: ChatResponse = chat( model="deepseek-r1", messages=[ @@ -277,7 +277,7 @@ response: ChatResponse = chat( print(response["message"]["content"]) ``` -```abap +```shell 好的,我现在要解决用户关于openGauss发布版本的问题。根据提供的上下文信息,openGauss每两年发布一个LTS版本,并且半年发布创新版本,当有重大问题修复时会发布补丁版本。 diff --git a/content/zh/docs/DataVec/openGauss-VectorDBBench.md b/content/zh/docs/DataVec/openGauss-VectorDBBench.md new file mode 100644 index 0000000000000000000000000000000000000000..777061eae0ea4ca602d65e811890323081c7b0a5 --- /dev/null +++ b/content/zh/docs/DataVec/openGauss-VectorDBBench.md @@ -0,0 +1,104 @@ +# 使用VectorDBBench工具性能测试 +VectorDBBench 是一款开源向量数据库基准测试工具,主要通过测量关键指标来衡量向量数据库的性能。 +本文介绍如何使用VectorDBBench工具对openGauss中Datavec向量引擎进行性能测试。 + +### 安装python3 +推荐安装Python3.11以上版本 +```bash +wget --no-check-certificate https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz +tar -xvf Python-3.11.0.tar.xz +cd Python-3.11.0 + +# 为用户自定义的python安装路径 +./configure --prefix= --enable-optimizations +make -j; make install +``` +设置python3环境变量 +```bash +vim ~/.bashrc +export PATH=/bin:$PATH +source ~/.bashrc +``` +### 安装vectordb-bench +```bash +pip3 install vectordb-bench[all] +``` +替换适配opengauss的vectordb-bench文件夹 +```bash +# 下载适配opengauss的vectordb-bench:https://github.com/wlff123/VectorDBBench.git +cp -r vectordb_bench /lib/python3.11/site-packages/ +``` +### 数据集下载 +VectorDBBench工具执行测试时,会根据选择的数据集自行从网络下载,也可以手动下载。 +```bash +# cohere1m数据集下载示例 +wget https://assets.zilliz.com/benchmark/cohere_medium_1m/test.parquet --no-check-certificate +wget https://assets.zilliz.com/benchmark/cohere_medium_1m/neighbors.parquet --no-check-certificate +wget https://assets.zilliz.com/benchmark/cohere_medium_1m/shuffle_train.parquet --no-check-certificate +``` +### 配置openGauss数据库参数 +按照测试需求对数据库节点目录下postgresql.conf文件中影响性能的关键参数配置: +```bash +max_connections = 1000 # 多并发测试时此值应大于并发连接数 +shared_buffers = 16GB # 机器内存足够时,建议此值大于数据集大小 +enable_indexscan = on # 开启索引扫描 +enable_seqscan = off # 关闭全表扫描 +``` +### 性能测试 +建议使用vectordbbench命令行执行测试,可以根据测试需求灵活调整测试参数。 +```bash +# 修改数据集路径 +# vi /lib/python3.11/site-packages/vectordb_bench/__init__.py +DATASET_LOCAL_DIR = '' + +# 本地机器如果不能从网络下载数据集,执行测试可能会报错,此时可以屏蔽掉下载数据集的相关代码 +# vi /lib/python3.11/site-packages/vectordb_bench/backend/data_source.py +class AwsS3Reader(DatasetReader): + # ... + def read(self, dataset: str, files: list[str], local_ds_root: pathlib.Path): + downloads = [] + # ... + else: + for file in files: + remote_file = pathlib.PurePosixPath(self.remote_root, dataset, file) + local_file = local_ds_root.joinpath(file) + # 此处屏蔽下载数据集的代码 + # if (not local_file.exists()) or (not self.validate_file(remote_file, local_file)): + # log.info(f"local file: {local_file} not match with remote: {remote_file}; add to downloading list") + # downloads.append(remote_file) +``` +测试命令示例 +```bash +# vectordbbench opengausshnsw --case-type --k --concurrency-duration --num-concurrency --user-name --password --host --port --db-name -m --ef-construction --ef-search +# ALGORITHM 测试用例类型 +# DATASET 测试用例数据集 +# TOPK 查询最近邻结果数量 +# DURATION 查询持续时间(秒) +# CONCURRENCY_NUM 并发数量 +# USERNAME 数据库用户名 +# PASSWORD 数据库密码 +# HOST 数据库ip地址 +# PORT 数据库端口 +# M hnsw索引构建参数 +# EF_CONSTRUCTION hnsw索引构建参数 +# EF_SEARCH hnsw索引搜索参数 + +# 详细参数说明可以执行命令查看帮助 +vectordbbench opengausshnsw --help +vectordbbench opengausshnswpq --help + +# hnsw索引测试命令 +vectordbbench opengausshnsw --case-type Performance768D1M --k 10 --concurrency-duration 60 --num-concurrency 1 --user-name gaussdb --password YourPassword --host 127.0.0.1 --port 5432 --db-name postgres -m 16 --ef-construction 200 --ef-search 200 +# hnswpq索引测试命令 +vectordbbench opengausshnswpq --pq_m 96 --hnsw_earlystop_threshold 160 --case-type Performance768D1M --k 10 --concurrency-duration 60 --num-concurrency 1 --user-name gaussdb --password YourPassword --host 127.0.0.1 --port 5432 --db-name postgres -m 16 --ef-construction 200 --ef-search 200 +``` +执行测试命令后,会在当前终端中打印测试执行过程和结果 +```bash +# 测试结果示例说明 +... INFO: Performance case got result: Metric(max_load_count=0, load_duration=xxx, qps=xxx, serial_latency_p99=xxx, recall=xxx, ndcg=xxx, conc_num_list=xxx, conc_qps_list=xxx, conc_latency_p99_list=xxx, conc_latency_avg_list=xxx)... +# load_duration 导入数据和构建索引的总时间 +# qps 吞吐量 +# serial_latency_p99 单并发查询p99时延 +# recall 召回率 +# conc_latency_p99_list 多并发查询p99时延 +``` diff --git a/content/zh/docs/DataVec/testtool_annbenchmark.md b/content/zh/docs/DataVec/testtool_annbenchmark.md new file mode 100644 index 0000000000000000000000000000000000000000..7b1a17dc33f56dfa26873c494f0a4f3872c678b3 --- /dev/null +++ b/content/zh/docs/DataVec/testtool_annbenchmark.md @@ -0,0 +1,110 @@ +# 向量分析性能测试-AnnBenchmark + +## 1. 准备工作 +### 测试环境 +- 安装python>=3.8.6 +- 下载适配openGauss数据库的ann-benchmark性能测试工具。下载链接:[ann-benchmarks-openGauss](https://github.com/lauraty123/ann-benchmarks-openGauss) +- 安装测试工具所需的依赖包`pip3 install -r requirements.txt` +- 部署openGauss-DataVec容器实例,教程可参考[openGauss-DataVec容器镜像安装](../../../docs-lite/zh/docs/InstallationGuide/容器镜像安装.md) +### 测试数据 +| Dataset | Dimensions | Train size | Test size | Neighbors | Distance | Download | +| ----------------------------------------------------------------- | ---------: | ---------: | --------: | --------: | --------- | -------------------------------------------------------------------------- | +| [DEEP1B](http://sites.skoltech.ru/compvision/noimi/) | 96 | 9,990,000 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/deep-image-96-angular.hdf5) (3.6GB) +| [Fashion-MNIST](https://github.com/zalandoresearch/fashion-mnist) | 784 | 60,000 | 10,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/fashion-mnist-784-euclidean.hdf5) (217MB) | +| [GIST](http://corpus-texmex.irisa.fr/) | 960 | 1,000,000 | 1,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/gist-960-euclidean.hdf5) (3.6GB) | +| [GloVe](http://nlp.stanford.edu/projects/glove/) | 25 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-25-angular.hdf5) (121MB) | +| GloVe | 50 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-50-angular.hdf5) (235MB) | +| GloVe | 100 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-100-angular.hdf5) (463MB) | +| GloVe | 200 | 1,183,514 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/glove-200-angular.hdf5) (918MB) | +| [Kosarak](http://fimi.uantwerpen.be/data/) | 27,983 | 74,962 | 500 | 100 | Jaccard | [HDF5](http://ann-benchmarks.com/kosarak-jaccard.hdf5) (33MB) | +| [MNIST](http://yann.lecun.com/exdb/mnist/) | 784 | 60,000 | 10,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/mnist-784-euclidean.hdf5) (217MB) | +| [MovieLens-10M](https://grouplens.org/datasets/movielens/10m/) | 65,134 | 69,363 | 500 | 100 | Jaccard | [HDF5](http://ann-benchmarks.com/movielens10m-jaccard.hdf5) (63MB) | +| [NYTimes](https://archive.ics.uci.edu/ml/datasets/bag+of+words) | 256 | 290,000 | 10,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/nytimes-256-angular.hdf5) (301MB) | +| [SIFT](http://corpus-texmex.irisa.fr/) | 128 | 1,000,000 | 10,000 | 100 | Euclidean | [HDF5](http://ann-benchmarks.com/sift-128-euclidean.hdf5) (501MB) | +| [Last.fm](https://github.com/erikbern/ann-benchmarks/pull/91) | 65 | 292,385 | 50,000 | 100 | Angular | [HDF5](http://ann-benchmarks.com/lastfm-64-dot.hdf5) (135MB) | +| [COCO-I2I](https://cocodataset.org/) | 512 | 113,287 | 10,000 | 100 | Angular | [HDF5](https://github.com/fabiocarrara/str-encoders/releases/download/v0.1.3/coco-i2i-512-angular.hdf5) (136MB) | +| [COCO-T2I](https://cocodataset.org/) | 512 | 113,287 | 10,000 | 100 | Angular | [HDF5](https://github.com/fabiocarrara/str-encoders/releases/download/v0.1.3/coco-t2i-512-angular.hdf5) (136MB) | + +> 注:
+> 数据集位置:置放路径为/ann-benchmarks-openGauss/data,需要先`mkdir data`
+> 数据集下载:可以直接通过`wget`下载,例如:`wget http://ann-benchmarks.com/glove-50-angular.hdf5 --no-check-certificate` + +## 2. 测试流程 +### 数据库配置 +容器内的配置文件路径: +``` +/var/lib/opengauss/data/postgresql.conf +``` +推荐配置参数: +``` +shared_buffers=50GB #推荐大于数据库和索引的总和 +maintenance_work_mem=4GB +password_encryption_type=1 +max_connections=1000 #最大连接数 +``` +有关具体参数的修改,请参考 **[GUC参数说明](../DatabaseReference/GUC参数说明.md)** +### ann-benchmark配置 +修改`go_opgs.sh`中的数据库连接配置 +```bash +export ANN_BENCHMARKS_OG_USER='YourUserName' +export ANN_BENCHMARKS_OG_PASSWORD='YourPassword' +export ANN_BENCHMARKS_OG_DBNAME='YourDBName' +export ANN_BENCHMARKS_OG_HOST='YourHost' +export ANN_BENCHMARKS_OG_PORT=YourPort +``` +修改ann-benchmarks-openGauss/ann_benchmarks/algorithms/openGauss/config.yml中构建索引、索引查询相关参数(按需) +```bash + - base_args: ['@metric'] + constructor: openGaussHNSW + disabled: false + docker_tag: ann-benchmarks-openGauss + module: ann_benchmarks.algorithms.openGauss + name: openGauss-hnsw + run_groups: + M-16: + arg_groups: [{M: 16, efConstruction: 200}] + args: {} + query_args: [[10, 20, 40, 80, 120, 200, 400, 800]] + M-24: + arg_groups: [{M: 24, efConstruction: 200}] + args: {} + query_args: [[10, 20, 40, 80, 120, 200, 400, 800]] +``` +- name: 近似搜索算法名 +- run_groups: 索引构建和索引查询参数设置,这里的arg_groups设置的是hnsw索引构建参数m和efconstruction,query_args则是hnsw索引查询参数ef_search。 + +### 执行测试 +修改`go_opgs.sh`中的启动命令 +```bash +python3 run.py --algorithm openGauss-hnsw --dataset fashion-mnist-784-euclidean --local --runs 1 -k 10 --batch +``` +- --algorithm 算法名,这里的算法名来源于ann-benchmarks-openGauss/ann_benchmarks/algorithms/openGauss/config.yml的name字段,目前支持openGauss-hnsw、openGauss-hnswpq、openGauss-ivfflat。 +- --dataset 数据集名称,支持的数据集见准备工作的测试数据章节。 +- -- runs 执行测试集次数 +- --k topk数目 +- --batch 如果加入该参数,可以开启向量数据的并发查询 + +开启测试 +```bash +sh go_opgs.sh +``` + +> 注:
+> 若已经执行过同组测试,需要重命名或删除`ann-benchmarks-openGauss/results///`下对应的文件,否则会直接跳过改组测试。 + +## 3. 测试结果 +### 输出html可互动网页 +```bash +python3 create_website.py --outputdir --scatter --recompute +``` + +### 输出数据表格 +```bash +python3 data_export.py --out <结果文件名>.csv +``` + +测试结果说明: +- k-nn:准确率 +- qps:吞吐量 +- p99:p99时延 +- build:构建索引耗时 diff --git "a/content/zh/docs/InstallationGuide/\345\256\271\345\231\250\351\225\234\345\203\217\345\256\211\350\243\205.md" "b/content/zh/docs/InstallationGuide/\345\256\271\345\231\250\351\225\234\345\203\217\345\256\211\350\243\205.md" index 4cc9bde55b39f0ece44f5c7ba2cde29797ba9779..8aad9cb58eb91fedf71d33c09914027b5af48729 100644 --- "a/content/zh/docs/InstallationGuide/\345\256\271\345\231\250\351\225\234\345\203\217\345\256\211\350\243\205.md" +++ "b/content/zh/docs/InstallationGuide/\345\256\271\345\231\250\351\225\234\345\203\217\345\256\211\350\243\205.md" @@ -12,25 +12,25 @@ $ docker pull opengauss/opengauss-server:latest ```bash $ docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -opengauss/opengauss latest 9aa832ba6684 2 hours ago 1.44GB +REPOSITORY TAG IMAGE ID CREATED SIZE +opengauss/opengauss-server latest 9763e8b26794 2 days ago 1.68GB ``` ### 下载镜像包并加载 -- 下载镜像包(以openGauss7.0.0-RC1.B020/openEuler20.03/arm下的包为例) +- 下载镜像包(以openGauss7.0.0-RC1.B023/openEuler20.03/arm下的包为例) ``` bash -$ wget https://download-opengauss.osinfra.cn/archive_test/7.0.0-RC1/openGauss7.0.0-RC1.B020/openEuler20.03/arm/openGauss-Docker-7.0.0-RC1.tar +$ wget https://download-opengauss.osinfra.cn/archive_test/7.0.0-RC1/openGauss7.0.0-RC1.B023/openEuler20.03/arm/openGauss-Docker-7.0.0-RC1-aarch64.tar ``` - 加载镜像 ``` bash -$ docker load -i openGauss-Docker-7.0.0-RC1.tar +$ docker load -i openGauss-Docker-7.0.0-RC1-aarch64.tar ``` - 验证镜像状态 ```bash $ docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -opengauss latest 9aa832ba6684 2 hours ago 1.44GB +REPOSITORY TAG IMAGE ID CREATED SIZE +opengauss/opengauss-server latest 9763e8b26794 2 days ago 1.68GB ``` >![](public_sys-resources/icon-note.png) **说明:** > @@ -38,9 +38,9 @@ opengauss latest 9aa832ba6684 2 hours ago 1 ## 2. 运行容器 -以`opengauss/opengauss:latest` 版本为例,以下命令将启动数据库并映射宿主机的端口到容器: +以`opengauss/opengauss-server:latest` 版本为例,以下命令将启动数据库并映射宿主机的端口到容器: ```bash -$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=YourPassoword -p 8888:5432 opengauss/opengauss:latest +$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=YourPassoword -p 8888:5432 opengauss/opengauss-server:latest ``` ### 启动参数 @@ -78,8 +78,8 @@ $ docker ps ``` 输出示例: ``` -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -7abc538f242a opengauss/opengauss:latest "entrypoint.sh gauss…" About a minute ago Up About a minute 0.0.0.0:8888->5432/tcp opengauss +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +7abc538f242a opengauss/opengauss-server:latest "entrypoint.sh gauss…" About a minute ago Up About a minute 0.0.0.0:8888->5432/tcp opengauss ``` ### 容器内部连接数据库 @@ -107,7 +107,7 @@ $ gsql -d postgres -U gaussdb -W YourPassoword -h your-host-ip -p 8888 通过以下命令,将宿主机的`/opengauss`目录挂载到容器的`/var/lib/opengauss`目录,实现数据的持久化存储: ```bash -$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=YourPassoword -v /opengauss:/var/lib/opengauss opengauss/opengauss:latest +$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=YourPassoword -v /opengauss:/var/lib/opengauss opengauss/opengauss-server:latest ``` ### 参数配置 diff --git "a/content/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" "b/content/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" index bdfd2afa6104d79426067fdff7bb9c245c7a2837..ab1bff64f16c74e45eb3b21ea6f53dc6c17440ba 100644 --- "a/content/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" +++ "b/content/zh/docs/SQLReference/ANYDATA\347\261\273\345\236\213.md" @@ -284,7 +284,7 @@ STATIC PROCEDURE BeginCreate( |9|varchar2| #### ADDINSTANCE -```self +```sql MEMBER PROCEDURE AddInstance( self IN OUT NOCOPY ANYDATASET); ``` diff --git "a/content/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/content/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" index 6a0754a2873ac846f83def3a63a095a079c03d53..50c91345fb10d5ec3adc67c7d0f95f99f49d73bf 100644 --- "a/content/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" +++ "b/content/zh/docs/SQLReference/\345\220\221\351\207\217\346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -22,7 +22,7 @@ sparsevec[(d)] | (8 * 非零元素数 + 16)字节| 1~1,000,000,000
最大非 ## Vector 每个vector占用 `4 * 维度 + 8` 字节的储存空间。 -每个元素都是单精度浮点数,有效小数位约为并且所有的元素都是有限的:(不能为 `NaN`,`Infinity` 或者 `-Infinity`)。 +每个元素都是单精度浮点数,并且所有的元素都是有限的:(不能为 `NaN`,`Infinity` 或者 `-Infinity`)。 vector的最大维度为 `16,000`。 ### 格式 diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index b29935029dd86d40b98f48d45f75a715bd2ffc4f..6a77d5be78ea713cea47c0097fdb53be00f2467f 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -913,23 +913,26 @@ headless: true - [向量存储引擎]({{< relref "./docs/DataVec/DataVec-architecture.md" >}}) - [PQ]({{< relref "./docs/DataVec/PQ.md" >}}) - [工具编排使用]({{< relref "./docs/DataVec/DataVec-integrations.md" >}}) - - [编排组件] + - 编排组件 - [Dify]({{< relref "./docs/DataVec/dify.md" >}}) - [AnythingLLM]({{< relref "./docs/DataVec/anythingllm.md" >}}) - - [嵌入模型] + - 嵌入模型 - [BGE-M3]({{< relref "./docs/DataVec/embedding-bgem3.md" >}}) - [Nomic]({{< relref "./docs/DataVec/embedding-nomic.md" >}}) - - [数据迁移] + - 数据迁移 - [从Milvus迁移至openGauss DataVec]({{< relref "./docs/DataVec/milvus2datavec.md" >}}) - - [API Reference]({{< relref "./docs/DataVec/integrationGo.md" >}}) + - API Reference - [Python SDK]({{< relref "./docs/DataVec/integrationPython.md" >}}) - [Java SDK]({{< relref "./docs/DataVec/integrationJava.md" >}}) - [Node.js SDK]({{< relref "./docs/DataVec/integrationJavaScript.md" >}}) - [Go SDK]({{< relref "./docs/DataVec/integrationGo.md" >}}) + - 性能测试 + - [VectorDBBench]({{< relref "./docs/DataVec/openGauss-VectorDBBench.md" >}}) + - [AnnBenchmark]({{< relref "./docs/DataVec/testtool_annbenchmark.md" >}}) - [教程案例指导]({{< relref "./docs/DataVec/DataVec-tutorials.md" >}}) - [打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手!]({{< relref "./docs/DataVec/openGauss-RAG实践.md" >}}) - [openGauss Datavec + Dify,快速搭建你的智能助手平台]({{< relref "./docs/DataVec/openGauss-Dify.md" >}}) - - [Spring Boot集成openGauss DataVec实现向量化检索]({{< relref "./docs/DataVec/openGauss-Springboot.md" >}} + - [Spring Boot集成openGauss DataVec实现向量化检索]({{< relref "./docs/DataVec/openGauss-Springboot.md" >}}) - [AI特性指南]({{< relref "./docs/AIFeatureGuide/AI特性.md" >}}) - [AI4DB: 数据库自治运维]({{< relref "./docs/AIFeatureGuide/AI4DB-数据库自治运维.md" >}}) - [DBMind模式说明]({{< relref "./docs/AIFeatureGuide/DBMind模式说明.md" >}})