资讯详情

Weaviate GraphQL 查询快速上手:3 步写出向量检索与聚合语句

📅 2026/9/10 7:25:56 | 华诺云谱 👁 阅读
Weaviate GraphQL 查询快速上手:3 步写出向量检索与聚合语句
Weaviate GraphQL 查询快速上手3 步写出向量检索与聚合语句【免费下载链接】weaviateWeaviate is an open-source vector database that stores both objects and vectors, allowing for the combination of vector search with structured filtering with the fault tolerance and scalability of a cloud-native database​.项目地址: https://gitcode.com/GitHub_Trending/we/weaviate想从库里捞出和这篇笔记感觉差不多的内容请求该怎么发Weaviate 是一个开源向量数据库同一张表里既存对象也存向量而它的 Weaviate GraphQL 查询接口允许你用一条语句同时做字段过滤和相似度搜索不必把请求拆成好几段。下面用一组学习笔记的示例带你从拿到第一条结果一直走到进阶玩法。 两步拿到第一条查询结果最短路径只有两件事启动 Weaviate默认 8080 端口向/v1/graphql发一个 POST 请求JSON 请求体里带上query字段。查询内容先保持最简从Note类里取 3 条标题。下面这段演示的就是这个最小查询只取title和updatedAt两个字段{ Get { Note(limit: 3) { title updatedAt } } }响应里能看到三条笔记的标题和更新时间说明链路已通。调试时还有个更省事的方式对同一路径发 GET 请求并让浏览器带上Accept: text/html就会渲染出 GraphiQL 交互页面可以边输查询边看结果还能把当前查询连同 URL 一起分享。这块页面的实现见 adapters/handlers/graphql/graphiql/。要点查询入口和可视化调试页是同一个路径靠请求方法和 Accept 头区分不用另记一个地址。 Get 查询参数怎么写where、nearText 与 _additionalGet 的参数基本覆盖四个能力点示例统一使用Note类字段title、body、tags、createdAt结构化过滤where类似 SQL 的 WHERE 子句path指向字段、operator指定比较方式、valueXxx给取值。语义检索nearText的concepts会先被嵌入模块向量化再取最接近的对象certainty是相似度门槛低于它的直接不返回。结果集控制limit限定条数offset跳过若干条。元信息_additional里可以挂id、distance这类查询相关的附加字段。下面这条语句把四者拼在一起演示过滤 向量检索 分页 元信息的组合用法{ Get { Note( limit: 5 offset: 0 where: { path: [tags] operator: Like valueString: %周报% } nearText: { concepts: [怎么写季度规划] certainty: 0.7 } ) { title body _additional { id distance } } } }执行效果是在标签含周报的笔记里挑出与给定文本相似度不低于 0.7 的前 5 条并附带每条的距离值。这里的distance是余弦距离数值越小代表两条笔记语义越接近不是分数越高越好。参数作用limit/offset限定条数与跳过条数最基础的分页手段where按结构化条件过滤字段Equal、Like 等算子可组合nearText语义检索入口concepts可传多个文本certainty控制门槛_additional返回 id、distance 等查询元数据按需选择跨类嵌套查询与聚合统计怎么写跨类嵌套如果Note上有一个指向Project类的引用字段project取笔记的同时就能把项目信息带出来... on片段语法负责为引用字段做类型分支{ Get { Note(limit: 3) { title project { ... on Project { name deadline } } } } }一次请求就同时拿到笔记和所属项目的名称、截止日期省掉了先查笔记、再按 ID 逐个查项目的两段往返。聚合统计想知道每个项目下有多少篇笔记这类问题改用Aggregate根字段。语法上把Note按groupBy: project分组组内写project { value count }即可逐项目返回计数行再加meta { count }能拿到总条数。聚合的具体处理逻辑在 adapters/handlers/graphql/local/aggregate/。一句话区分Get 回答是哪些Aggregate 回答有多少按问题类型选入口。底层一瞥模式构建与解析的分工不需要深挖三句话足够建立整体图景Weaviate 在集合模式变化时会把数据库模式动态翻译成 GraphQL 模式每个类自动变成Get下的一个字段查询进来后由Resolve方法执行根对象里挂着的Resolver再调用底层的GetClass取数。相关代码集中在 adapters/handlers/graphql/取数侧在 adapters/handlers/graphql/local/get/。这样设计带来的直接好处是新建的集合自动拥有对应的查询字段你不需要为 GraphQL 维护任何映射代码。调优清单与常见坑场景建议结果集偏大、响应变慢始终带limit用offset翻页避免一次拉全量字段选择过多像点菜一样只勾需要的字段返回体与解析开销同步变小某个字段经常被过滤建类时把它声明为索引属性where条件才有加速空间语义检索杂音多调高certainty收紧筛选宁缺毋滥嵌套引用层数深每多一层就要多解析一批引用对象控制深度并给每层加limit再提醒一个高频误区distance越小越好certainty越高越严格——后者设得过高会直接把结果过滤空。一句话收束把 Weaviate GraphQL 查询记成三件事就够Get 取具体对象、参数里 where 管过滤 nearText 管语义、Aggregate 管计数。更多可运行的查询用例可以参考 test/acceptance/ 下的验收测试。文中示例基于当前开发版本编写实际部署时请以你所用版本随附的接口文档为准。【免费下载链接】weaviateWeaviate is an open-source vector database that stores both objects and vectors, allowing for the combination of vector search with structured filtering with the fault tolerance and scalability of a cloud-native database​.项目地址: https://gitcode.com/GitHub_Trending/we/weaviate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。