基于RAGFlow+OpenSearch+Deepseek快速搭建知识库问答RAG应用 天翼云云搜索团队RAGFlow社区贡献 RAGFlow默认使用Elasticsearch 8.x作为向量库数据库。天翼云云搜索团队成员贡献了OpenSearch 2.19.1作为向量数据库的全流程支持,已合入社区,并在正式发版中作为NewFeatures单独致谢。在RAGFlow的v0.19.0以后的版本中均支持OpenSearch 2.19.1作为底层向量数据库。 前置需求 开通天翼云云搜索服务OpenSearch实例,获取内网地址和实例密码。 准备好云主机环境用来部署RAGFlow,需要和OpenSearch实例网络互通。 准备好Deepseek模型、Embedding向量模型、Rerank重排序模型。 安装好Docker环境。 RAG运行流程 1. 用户通过RAGFlow对话框进行提问。 2. 调用Embedding模型将查询向量化。 3. 使用OpenSearch的Hybridsearch混合检索进行召回,调用Rerank模型进行重排序,返回和提问相关的文档。 4. 将检索到的文档及对话的上下文通过Deepseek大模型总结归纳生成详细准确的回复。 步骤一:部署RAGFlow 1. 拉取RAGFlow最新源码到云主机上,以下以v0.19.1为例。 2. 进入ragflow源码的docker目录 plaintext cd ragflow/docker 3. 修改向量数据库为OpenSearch plaintext vim .env DOCENGINE${DOCENGINE:opensearch} 修改如下配置项 plaintext OSPORT9200 OSHOSTnode1 OPENSEARCHPASSWORDxxxxxx 4. 确认使用镜像 plaintext vim .env RAGFLOWIMAGEinfiniflow/ragflow:v0.19.1 5. 修改dockercomposebase.yml文件 为了性能,不适用docker自带的Elasticsearch和OpenSearch,注释掉如下代码: plaintext es01: containername: ragflowes01 profiles: elasticsearch image: elasticsearch:${STACKVERSION} volumes: esdata01:/usr/share/elasticsearch/data ports: ${ESPORT}:9200 envfile: .env environment: node.namees01 ELASTICPASSWORD${ELASTICPASSWORD} bootstrap.memorylockfalse discovery.typesinglenode xpack.security.enabledtrue xpack.security.http.ssl.enabledfalse xpack.security.transport.ssl.enabledfalse cluster.routing.allocation.disk.watermark.low5gb cluster.routing.allocation.disk.watermark.high3gb cluster.routing.allocation.disk.watermark.floodstage2gb TZ${TIMEZONE} memlimit: ${MEMLIMIT} ulimits: memlock: soft: 1 hard: 1 healthcheck: test: ["CMDSHELL", "curl interval: 10s timeout: 10s retries: 120 networks: ragflow restart: onfailure opensearch01: containername: ragflowopensearch01 profiles: opensearch image: hub.icert.top/opensearchproject/opensearch:2.19.1 volumes: osdata01:/usr/share/opensearch/data ports: ${OSPORT}:9201 envfile: .env environment: node.nameopensearch01 OPENSEARCHPASSWORD${OPENSEARCHPASSWORD} OPENSEARCHINITIALADMINPASSWORD${OPENSEARCHPASSWORD} bootstrap.memorylockfalse discovery.typesinglenode plugins.security.disabledfalse plugins.security.ssl.http.enabledfalse plugins.security.ssl.transport.enabledtrue cluster.routing.allocation.disk.watermark.low5gb cluster.routing.allocation.disk.watermark.high3gb cluster.routing.allocation.disk.watermark.floodstage2gb TZ${TIMEZONE} http.port9201 memlimit: ${MEMLIMIT} ulimits: memlock: soft: 1 hard: 1 healthcheck: test: ["CMDSHELL", "curl interval: 10s timeout: 10s retries: 120 networks: ragflow restart: onfailure 6. 修改部分conf配置 plaintext vim serviceconf.yaml.template hosts: ' 7. 启动服务 plaintext docker compose f dockercompose.yml up d 8. 查看启动log plaintext docker logs f ragflowserver 9. 浏览器页面打开,默认服务在80端口