尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Nacos AI 资源检索规范深度解析:协议无关的 Search Core、索引任务与 Readiness 机制

Nacos AI 资源检索规范深度解析:协议无关的 Search Core、索引任务与 Readiness 机制 Nacos AI 资源检索规范深度解析协议无关的 Search Core、索引任务与 Readiness 机制【免费下载链接】nacosan easy-to-use dynamic service discovery, configuration and service management platform for building AI cloud native applications.项目地址: https://gitcode.com/GitHub_Trending/na/nacos本文以 Nacos 官方《AI 资源检索规范》specs/zh-cn/ai/ai-resource-search-spec.md为核心骨架结合ai模块的真实源码AiResourceSearchService.java逐层拆解 Nacos 为 Agent、AgentSpec、Skill、Prompt、MCP 等标准 AI 资源构建的统一检索运行时从配置激活、类型化 predicate、关键词/向量双通道召回与 RRF 融合到ai_resource_task持久化任务的两阶段收敛、lease/revision 防并发覆盖以及按(resourceType, projectionVersion)维护的集群共享 Readiness。读完本文你将掌握该检索内核的配置项含义、HTTP Facade 契约、索引表结构与升级迁移路径并能据此排查索引不一致、读模式选择与 Enhancement 回退等生产问题。1. 范围与激活一套内核多协议复用规范的第一条原则是AI Resource Search 是ai模块内可复用、协议无关的逻辑能力。RAD、ARD、通用 AI Resource Search 以及 Agent/Skill/Prompt/MCP 等资源专用 Search 都必须复用这一套索引与检索内核不得各自维护独立索引或搜索引擎。HTTP、Java SDK、Console 和外部协议响应则由各自的 API 或适配器规范单独定义检索内核不感知协议语义。1.1 配置项与非法组合检索运行时的激活与三个配置项直接相关均可在application.properties中设置配置键默认值作用nacos.ai.resource.search.enabledtrue独立激活协议无关的 AI Resource Search 运行时基础关系检索运行时nacos.ai.ard.enabled-只控制 ARD Web Context 与协议端点不得关闭 RAD 或其他资源 API 依赖的检索运行时nacos.ai.rad.search.modeAUTO选择 RAD Search 的读路径AUTO/INDEX/SCAN其中前两个键在源码常量类中均有明确定义Constants.java 中声明了ARD_ENABLED_KEY nacos.ai.ard.enabled与AI_RESOURCE_SEARCH_ENABLED_KEY nacos.ai.resource.search.enabled后者注释明确写着“Enables the protocol-neutral AI Resource Search runtime”Constants.java 则声明了RAD_SEARCH_MODE_CONFIG_KEY nacos.ai.rad.search.mode。规范特别强调了一个非法组合nacos.ai.ard.enabledtrue且nacos.ai.resource.search.enabledfalse必须被拒绝。理由是 ARD 端点本身依赖检索运行时服务端必须在启动配置校验时明确失败不能隐式创建一套 ARD 专属索引。这一点在ai模块测试中有专门覆盖AiResourceSearchConfigurationValidatorTest.java。同时检索实现不得依赖ARD 的请求、响应、identifier、federation、media type 或 artifact 语义——这是保证“一套内核多协议复用”的硬约束。2. 所有权边界内核与适配器各管一段规范用清晰的所有权划分避免职责混乱AI 模块Search Core负责标准 search document、chunk 和 facet 投影资源类型处理器注册、Query Planner 与多召回通道结果融合持久化索引任务与 reconciliation对账修复关键词召回和可选向量召回排序及确定性 tie-breaking并列时的稳定次序可见性 query advice 与逐资源可见性校验latest label 与当前 online version 校验类型化 predicate、不透明 cursor、numbered page 与完整结果集聚合每种资源投影代际generation的 readiness。协议适配器 / 资源专用 API Facade 负责请求解析与协议校验类型专用 filter 到标准 predicate 的转换响应 DTO 与错误映射。而 identifier、media type、artifact URL 与 federation 行为仅属于对应协议适配器不进内核。源码中这一边界的直接体现是 AiResourceSearchService.java其 Javadoc 写明它是 “Canonical AI resource discovery application service”拥有 recall、ranking、visibility 和 current-version 检查、canonical field 过滤、排序与分页而协议适配器只负责转换请求与响应模型。3. 检索模型类型化 Predicate 与查询语义内部 query model 包含namespace、text、一个或多个标准resource type、类型化 predicate、时间边界、排序及 cursor 或 numbered page 信息。不得包含协议 DTO 或协议专属字段名。标准 predicate 结构field operator EXACT_ANY | EXACT_ALL | LITERAL_CONTAINS values[] caseSensitive语义要点同一个 predicate 内由operator定义 ANY、ALL 或 literal contains多个 predicate 使用AND组合metadata.facetKey是协议无关的 facet 路径实现必须把%、_和 escape char 当作普通输入字符不能让数据库 LIKE 通配符改变 literal contains 语义类型专用 Facade 可以固定 resource type、允许的字段、大小写和字段权重但不得改变公共可见性、enabled 和 currentness 规则既有协议 filter 可保留兼容入口但进入 Search Core 前必须转换为标准 predicate。检索结果返回application DTO 而非持久化实体可暴露标准资源键、当前版本、展示与检索元数据、时间戳和相关度分数数据库行 ID、索引状态、任务状态则保留在检索实现内部。3.1 通用 Client HTTP Search Facade通用跨类型搜索端点为GET /v3/client/ai/resources/search该路径在源码中定义为 Constants.java 的AI_RESOURCE_SEARCH_CLIENT_PATH并由 AiResourceSearchClientController.java 暴露。请求参数与默认值参数类型说明namespaceIdString省略时使用publicqueryString可选空白时执行确定性列表非空时执行相关度 SearchresourceTypes可重复省略时检索所有已注册的可检索类型tagsAll可重复结构化 facet 过滤ALL 语义capabilitiesAny可重复结构化 facet 过滤ANY 语义cursorString不透明游标最长 2048 字符limitint默认20取值范围1~100含边界边界约束每个重复 filter 最多包含32 个非空值query最长1024 字符未知资源类型和非法边界统一返回参数校验错误。响应语义响应为ResultAiResourceSearchResponseitems包含协议无关的资源身份、当前 Version、展示/检索元数据、时间戳和score没有下一页时不返回nextCursor通用 cursor page不暴露numbered-page 的 total。源码侧的分发逻辑位于 AiResourceSearchApplicationService.java空白 query 走core.list(query)确定性列表非空 query 走core.search(query)相关度搜索并完成资源类型解析未知类型抛出PARAMETER_VALIDATE_ERROR。3.2 资源专用 Client HTTP Facade资源Endpoint类型专用请求字段响应AgentGET /v3/client/ai/agents/search既有 RAD filteragentNameContains、tagsAll、protocolsAny既有 numberedPageAgentSummary契约AgentSpecGET /v3/client/ai/agentspecs/search兼容字段keyword、tagsAll、pageNo、pageSizePageAgentSpecBasicInfoSkillGET /v3/client/ai/skills/searchquery、tagsAll、pageNo、pageSizePageSkillBasicInfoPromptGET /v3/client/ai/prompt/searchquery、tagsAll、pageNo、pageSizePagePromptMetaSummaryMCPGET /v3/client/ai/mcp/searchquery、tagsAll、protocolsAny、capabilitiesAny、pageNo、pageSizePageMcpServerBasicInfo各 numbered Facade 的行为约定省略pageNo/pageSize时使用公共分页默认值源码中 AiResourceSearchService.java 定义DEFAULT_NUMBERED_PAGE_SIZE 20非正数必须拒绝空白 text 按稳定资源键列出当前资源非空 text 复用共享召回和排序路径AgentSpec 为兼容既有keyword契约保留 resource name 的literal contains语义见 AiResourceSearchApplicationService.java将 keyword 转为resourceName字段的LITERAL_CONTAINSpredicate各 Facade 映射与通用单类型 Search 相同的合法 Document不得在分页后再次过滤。4. 聚合基于完整合法匹配集聚合Aggregation必须基于完整的合法匹配集而不是单个结果页。服务按消费者需要返回标准 bucket value、count、超过 bucket limit 的数量以及匹配总数。协议派生值由适配器映射——例如适配器可以把标准 resource type bucket 转换成 ARD media type而不把 ARD media type 语义塞进 AI 模块。源码中 AiResourceSearchService.java 的aggregate方法空白 text 时走aggregateList按文档 ID 有界分批扫描全量合法集合再统计非空 text 时基于searchCandidates的完整候选集聚合aggregateCandidates 与 buildAggregation 完成桶计数、按 count 降序 key 升序的稳定排序以及超出limit的桶归入otherCount。5. 索引与 Schema可重建的派生状态关系检索索引使用三个协议无关对象所有支持的主数据源MySQL、PostgreSQL、Derby、Oracle都提供ai_resource_search_documentai_resource_search_chunkai_resource_task。要点ai_resource_task可供 AI 资源域内的持久化异步任务复用但它不是 Nacos 全局工作流引擎每种任务类型拥有自己的版本化 JSON 输入和结果 Schema逻辑 JSON 使用 text 或 CLOB 存储不使用数据源专属的原生 JSON 类型可选 PostgreSQL vector 实现负责独立的 pgvector Schema 与ai_resource_search_embedding_pg表主数据源 Schema不得创建 pgvector 扩展或 embedding 表标准资源写入始终是事实来源source of truthSearch document 和 chunk 属于可重建的派生状态。逻辑IndexProjection由一个 document、零到多个 chunk 和 facet 集合组成document保存资源身份、展示信息、状态、当前版本、source digest 和稳定排序字段facet保存精确过滤属性。第一代实现可以把通用 key/value 或 array facet 保存在 document metadata 中不要求立即增加物理表chunk只保存关键词或向量召回所需的文本内容facet不生成独立 chunk也不进入 embedding结构化 document/facet 关键词索引是基础 Search 的必选组成向量索引是可选召回通道Agent 等资源只能填充自己拥有的 facet不能要求 Skill、Prompt、MCP 或 AgentSpec 增加 Agent 专属列。所有召回通道由同一个 Query Planner/Fusion负责候选生成、结构化过滤、去重、分数融合、可见性、当前性和分页。向量 Provider 不能下推 facet 时Planner 必须使用有界且可证明完整的候选策略禁止对固定 top-K 结果只做一次后过滤就声称 total 或分页完整。源码中的两阶段写入实现可参考 AiResourceIndexServiceImpl.java 与 JdbcAiResourceSearchRepository.java。5.1 资源类型处理器每个声明可检索的资源类型必须注册协议无关的类型处理器至少提供resourceType() project(namespaceId, resourceName) - OptionalIndexProjection scan(namespaceId, cursor, batchSize) - SourcePage isCurrent(document) - boolean exists(namespaceId, resourceName) - boolean语义约束project返回空表示资源不存在、不可发现或没有合法当前版本索引服务应删除该逻辑资源的派生文档scan只用于 Backfill/Reconciliation必须按稳定资源键有界扫描isCurrent必须执行该资源的 enabled、可见性、当前版本和 source digest 校验处理器属于ai模块不能引用ARD DTO、URL 或 media type每个可检索处理器必须声明正数projectionVersion初始 generation 为1投影契约变化时递增Readiness 是所有可检索类型共享的完整性与可观测信号不是仅由保留旧扫描路径的类型实现的兼容切换开关。本规范声明的可检索类型为Agent、AgentSpec、Skill、Prompt 和 MCP。若将来某个 AI Resource 不参加通用 Search必须在该资源规范中明确声明不能仅因尚未实现处理器而静默漏掉。源码中的处理器实现包括 AgentAiResourceSearchTypeHandler.java、AgentSpecAiResourceSearchTypeHandler.java、McpAiResourceSearchTypeHandler.java 与 StoredAiResourceSearchTypeHandler.java统一注册于 AiResourceSearchTypeHandlerRegistry.java。5.2 Agent 投影每个(namespaceId, agentName)最多维护一个 enabled document其resourceVersion是 commonlatest指向的精确 online Version。Agent document 至少投影display name、description、business tags、provider、icon 和 scope 等目录字段全部 online Version 的有序紧凑 version catalog全部 online Version 的 protocol有序去重并集metadata.protocolscommon latest 精确 Version 可完整导出的表示 key 集合metadata.artifactKindsmetadata.projectionVersion与由稳定业务事实生成的sourceDigest。protocols表示调用协议artifactKinds表示可完整返回的版本制品两者不得混用。Chunk 与结构化字段的划分Agent name、description、tags、能力和示例可以生成 chunkscope、owner、status、protocols 和 artifactKinds 仅作为结构化字段。Runtime Endpoint、健康状态、Publisher、心跳和 Runtime revision 永远不进入持久搜索索引。Agent source digest 使用canonical JSON 的 SHA-256覆盖影响目录或检索投影的 Agent metadata、完整 version catalog、common latest、latest VersioncontentDigest、artifactKinds 和 projection version无语义的修改时间不单独触发 digest 变化。标准资源标识字段和任务控制字段必须与标准资源存储保持一致使用精确且大小写敏感的比较关键词匹配通过 Locale 无关的查询规范化实现大小写不敏感不得依赖数据源专属的表级大小写不敏感排序规则。5.3 MCP 投影每个(namespaceId, mcpName)最多存在一个 Enable DocumentresourceName必须是标准mcpName绝不能是已废弃的mcpIdresourceVersion是 Commonlatest指向的 Online Version。MCP Handler 从AiResource、AiResourceVersion以及持久化 MCP Storage Descriptor 加载的内容生成投影不得通过历史 MCP Operation Service、Serving Manifest、最终一致的 Search 或 MCP 内存 ID Index 定位源内容。可进入 Document 的字段公开 Description、Tools、Resources、Business Tag、Protocol 和 Capability。绝不进入耐久索引的字段Credential、敏感 Auth Metadata、Naming Instance、Health、Heartbeat 和 Runtime Endpoint 状态。只有兼容 DTO 要求时历史mcpId才可以作为 Response Metadata 保留不能成为 Document Identity。生命周期托管投影递增 MCPprojectionVersionBackfill 重建 Name-Keyed DocumentReconciliation 删除过期或孤立的 ID-Keyed Document 与 Task确保 MCP不会长期保留两个标准 Search 身份。6. 一致性原子替换、两阶段任务与租约防并发6.1 原子性与任务 Key单个逻辑资源的关系 document、chunks 和内嵌 facets 必须原子替换。关系索引与向量索引之间不要求分布式事务——系统使用幂等的search_index持久化任务重新读取标准资源状态并收敛两类索引。任务 key task type、namespace、以及由resource type resource name组成的逻辑 subject 的SHA-256。Key 包含 task type因此其他 AI 资源工作流复用同一张表时不会与检索索引任务冲突。6.2 调度触发规则标准资源生命周期事务成功提交后按(namespaceId, resourceType, resourceName)调度合并任务调度失败不得回滚已经成功的事实写入由指标、告警和 reconciliation 修复。Agent 必须调度的场景创建、目录 metadata 或治理字段变化、Version publish/online/offline/delete、common latest 或自定义 label 变化、legacy A2A facade 产生的 canonical 定义变化、Agent 删除。Agent 不得调度的场景Endpoint register/deregister、heartbeat、健康变化和 Runtime revision。MCP 必须调度的场景Create/Update、Publish、Online/Offline/Delete、Enable/Disable、Label 和 Import按标准mcpName不得调度的场景Endpoint Register/Deregister、Heartbeat、Reconnect 及其他仅 Runtime 变更。6.3 两个持久化阶段同一任务行负责两个持久化阶段阶段内容base_index收敛确定性关系分片及已配置的向量索引llm_enhancement替换可选的 AI 生成分片再收敛完整资源版本的向量索引每个阶段使用pending、processing、completed状态。首次执行和可重试任务均使用pending通过retry_count、next_execute_at、last_error区分延迟重试与新任务。成功行作为每个存活资源的有界完成检查点保留不记录任务历史。6.4 Revision 与 Lease Token防旧 Worker 覆盖这是并发安全的核心设计资源生命周期变更递增任务revision并从base_index重新开始已领取的 revision 只有在仍持有任务行时才能推进、重试或完成Revision 表示已调度的任务内容领取任务不得递增 revision每次领取成功都必须递增独立且单调的lease_token续租、状态迁移和 superseded work 释放都必须比较该 token过期 worker 不得修改或释放后来 worker 的租约生命周期任务无论连续合并多少次更新都必须保留尚未过期的租约替代 revision 只有在当前 token 持有者释放租约或租约过期后才能被领取进程失败后其他节点可在 lease 过期后接管Enhancement 任务回退到base_index同样必须使用 revision 和 lease token 条件基础阶段和 Enhancement 阶段都必须通过独立于轮询线程的执行器续租领取的 Enhancement 任务数不得超过已配置的 worker 并发数。6.5 任务 Payload 与 Result检索索引任务输入保存在task_payload必须包含schemaVersion、保存 resource type 和 resource name 的subject、options.enhancementRequested调度新 revision 时整体替换Payload该 revision 执行期间 Payload不可变Enhancement 完成元数据保存在版本化task_result当前结果包含完成时的 Enhancement fingerprint轮询、领取、重试、lease 接管、revision 防并发覆盖和 lease token fencing 的调度元数据继续使用独立关系列无法解析或 Schema 版本不支持的任务 Payload 必须以带解码错误的完成检查点隔离不能导致同一批其他到期任务失败或饥饿后续 reconciliation 可使用当前 Payload 重新打开该任务。6.6 时钟纪律调度截止点以Unix Epoch 毫秒保存到 BIGINT 类型的next_execute_at和lease_expire_at。轮询、领取、重试和 lease 续期必须使用同一个注入的应用时钟生成比较时间及截止点不得混用JVM 经 JDBC 转换的 timestamp 和数据源CURRENT_TIMESTAMP。Nacos 集群节点应保持系统时钟同步。6.7 Enhancement 语义Enhancement 写入必须幂等AI 生成的 chunk type 必须事务性替换、不能追加向量索引按完整资源版本替换只有两类写入都成功后才能完成任务Enhancement 配置 fingerprint 包含 provider endpoint、model、Prompt 版本、输出 Schema 版本及相关输出限制不得包含密钥fingerprint 仅用于审计和问题诊断不作为收敛目标——配置变化不得重新调度已完成资源资源生命周期任务在调度时持久化当时是否开启 Enhancement只有明确请求 Enhancement 的任务才能从base_index推进到llm_enhancement执行时使用当时生效的配置Enhancement 关闭时仍处于base_index的任务可直接完成已进入llm_enhancement的任务不得直接完成必须创建options.enhancementRequestedfalse的新 revision 回到base_index清除可能部分写入的 Enhancement chunk、重新收敛基础向量索引后作为基础索引检查点完成之后重新开启 Enhancement不得重新调度该已完成资源开关已开启但配置不完整时Enhancement 阶段必须回到pending并保留重试元数据不能当作关闭处理。6.8 失败重试与 Reconciliation失败时将当前阶段恢复为pending增加retry_count按指数退避设置next_execute_at。周期性 reconciliation 检测遗漏、部分、过期和孤儿基础索引索引缺失或不一致时按正常建索引流程重建并根据修复任务调度时的 Enhancement 开关决定是否请求 Enhancement索引已一致时不得仅因历史资源缺少 Enhancement 检查点而触发修复——开启 Enhancement 不会导致历史数据全量刷新同一资源已有活动任务时reconciliation 必须保留其 Payload 中持久化的 Enhancement 意图以及 revision、阶段、重试延迟和 lease向量 reconciliation 除模型和 chunk 数量外还必须比较关系 document 标识每个类型处理器的 reconciliation 必须检测缺失、部分、过期和孤儿投影Agent 还必须比较 projection version、source digest、common latest、version catalog 和可选向量状态无 online Version、disabled 或 deleted 资源的正确收敛结果是删除派生文档而不是永久重试。7. 资源边界有界扫描与候选上限列表、聚合、reconciliation 和持久化任务轮询必须按有界数据库批次扫描关系状态资源源扫描和 numbered list 使用稳定的 resource-keykeyset排序并列时使用不可变行键消除歧义完成 predicate、可见性和当前版本校验后列表分页在内存中只保留请求页及一条用于判断下一页的记录numbered page 只额外保留计数器不能保留全部匹配项Reconciliation不得在内存中保留全部标准资源名称集群扫描 lease 必须记录 owner 和过期时间扫描期间通过CAS 续租并且只有相同 owner 仍持有 lease 时才能释放关键词和向量召回分别设置可配置的候选上限。任一通道超过上限时检索必须明确失败不得返回静默截断的结果。源码中的默认值与配置键位于 AiResourceSearchService.javaDEFAULT_MAX_RECALL_CANDIDATES 10000配置键为nacos.ai.resource.search.max-recall-candidates超限时通过 ensureWithinRecallLimit 抛出SERVER_ERROR。8. Readiness 与读模式8.1 集群共享的 Readiness每个可检索资源类型都必须按(resourceType, projectionVersion)维护持久、集群共享的 readiness。Backfill 扫描 lease 只表示当前扫描 owner不能替代readiness。一个 projection generation 只有在以下条件全部满足时才能通过 CAS 标记为READY成功枚举全部有效 namespace且没有用publicfallback 掩盖枚举失败完成一轮该资源类型的有界 source scan扫描差异均已成功调度后续验证轮没有未修复的缺失、过期或孤儿文档没有属于该轮的 pending、processing 或 retry 任务readiness record 写入当前 projection version。READY对同一 generation 是sticky的普通生命周期任务短暂 pending 不把该 generation 退回未就绪查询的 currentness 校验先排除陈旧文档任务随后收敛。投影契约变化必须递增 projection version 并创建新的 readiness generation。NOT READY不是 API 可用性错误通用 Search、资源专用 Search、RAD 和 ARD 都继续调用 Search Core 并返回当前索引快照在 Backfill 和持久化任务收敛前结果可能不完整。查询路径缓存 readiness 观测并对未就绪的资源类型和 generation 输出限频警告日志不得包含查询文本或结构化 predicate 值。一次请求不得混合部分索引和标准资源扫描结果。索引运行时失败仍然明确返回错误并与 projection readiness 区分。源码侧可参考 AiResourceSearchReadinessService.java、ConfigAiResourceSearchReadinessService.java 与 DefaultAiResourceSearchReadinessObserver.java。8.2 RAD Search 读模式AUTO / INDEX / SCANRAD Search 使用nacos.ai.rad.search.modeAUTO|INDEX|SCAN选择读路径默认AUTO模式未 READYREADY索引调用失败AUTO使用当前索引快照并警告结果可能不完整使用索引明确失败不逐请求回退INDEX使用当前索引快照并警告结果可能不完整使用索引明确失败SCAN使用旧扫描始终使用旧扫描不涉及索引AUTO仍是默认值当前与INDEX一样选择共享索引保留独立值用于配置兼容和未来选择策略SCAN是显式诊断与兼容路径模式不得改变RAD 名称、Tag、Protocol、大小写、排序、可见性或 version catalog 契约Generation 未就绪时索引支持的 total 和分页只覆盖当前已索引集合。源码中 AgentSearchModeResolverTest.java 覆盖了模式解析逻辑AUTO/INDEX/SCAN的交叉行为也是规范第 10 节明确要求的测试项。9. 升级与初始化表迁移与兼容路径如果部署环境曾在引入持久化重试之前创建过 ARD 检索表则在开启nacos.ai.resource.search.enabled前必须使用当前数据库对应的 Schema 补齐三个协议无关关系表ai_resource_search_documentai_resource_search_chunkai_resource_task。MySQL、PostgreSQL、Derby 和 Oracle 应分别使用匹配的当前主数据源 Schema。即使 document 和 chunk 表中已存在数据也必须创建 task 表——该表保存任务类型、版本化 Payload 和 Result、阶段、重试、租约、revision 和完成检查点不能替代两个索引表。9.1 从旧表迁移到 ai_resource_task已经创建ai_resource_search_index_task的部署必须在开启检索前迁移到ai_resource_task旧字段迁移目标resource_type、resource_name、enhancement_requested写入版本 1 的task_payloadenhancement_fingerprint写入版本 1 的task_resultattempt_countretry_countnext_retry_time转换为 Unix Epoch 毫秒的next_execute_at原retry状态pending中间版本的ai_resource_task若仍使用 timestamp 类型的next_execute_time和lease_until必须转换为 Epoch 毫秒类型的next_execute_at和lease_expire_at。已有ai_resource_task表还必须增加非空且默认值为0的 BIGINTlease_token列。迁移行的task_type为search_index并按包含 task type 的新规则重新生成 task key。在线升级时必须保留已有任务意图。对于允许丢弃任务状态的未发布开发环境也可以删除旧 task 表并使用当前 Schema 重建之后由 reconciliation 修复不一致的基础索引。9.2 初始化与向量插件开启 Enhancement不得修改索引正常的历史检索数据周期 reconciliation 只有在基础索引或已配置向量索引确实需要修复时才会对历史资源执行 Enhancement对其他索引正常的历史资源执行 Enhancement必须由运维显式触发PostgreSQL 环境如果不开启默认向量插件无需创建任何 pgvector 对象如果开启则必须另外执行nacos-default-ai-vector-plugin自己维护的可选 Schema参考 plugin-default-impl/nacos-default-ai-vector-plugin每个新增资源类型和 projection generation 都运行 Backfill 与 readinessSearch 可以在 readiness 前使用当前快照并随收敛自然变得完整索引是可重建派生状态不改变标准资源或 Runtime Endpoint 的事实源也不要求把 Runtime 状态迁移到关系检索表。10. 兼容与测试内部检索命名、持久化模型、表、配置和 Vector SPI package 必须保持协议无关。现有 ARD Skill、Prompt 和 MCP 的请求、cursor、排序与 artifact 行为在共享内核扩展时保持兼容。规范明确要求测试覆盖对应 AiResourceSearchServiceTest.java、AiResourceSearchApplicationServiceTest.java、JdbcAiResourceIndexTaskRepositoryTest.java、JdbcAiResourceSearchRepositoryTest.java 等测试类关键词和向量召回、结构化 facet、类型化 predicate、排序、可见性、当前版本校验cursor 和 numbered page、超过单页范围的全量聚合通用单类型与资源专用 Search 的一致性事务替换、两个持久化任务阶段、lease 恢复、过期 revisionEnhancement 幂等重试、版本化任务 Payload 和 Result、task type 隔离时区无关的 Epoch 调度、确定性时钟下的 lease 与重试边界连续生命周期合并保留活动租约、基于 lease token 防止旧 worker 释放新租约配置 fingerprint 记录但不全量重调度、生命周期 Enhancement 意图仅对实际修复资源执行 Enhancement 且不全量刷新历史数据的 reconciliationAgent lifecycle 调度与 Runtime Endpoint 非调度所有可检索类型的 readiness CAS / 重启 / 新 generationNOT READY 限频观测、非阻塞部分快照行为AUTO/INDEX/SCAN交叉行为。各协议适配器和资源 API 则分别测试自己的请求语法、响应一致性和单类型交叉结果。总结Nacos AI 资源检索规范描述了一个完全协议无关的检索内核RAD、ARD、通用 Search 与五种资源专用 Search 共享同一套索引、Query Planner、持久化任务与 readiness 体系。理解三个关键配置nacos.ai.resource.search.enabled、nacos.ai.resource.search.max-recall-candidates、nacos.ai.rad.search.mode、三类关系表document / chunk / task、两阶段任务收敛base_index/llm_enhancement以及 revision lease token 的防并发模型是运维与二次开发该能力的基础而升级迁移到ai_resource_task的字段映射表则是存量 ARD 部署平滑接入检索的必经之路。需要继续深入时可直接阅读 ai-resource-search-spec.md 原文并结合 ai/src/main/java/com/alibaba/nacos/ai/service/search 下的核心实现逐行对照。【免费下载链接】nacosan easy-to-use dynamic service discovery, configuration and service management platform for building AI cloud native applications.项目地址: https://gitcode.com/GitHub_Trending/na/nacos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表