From 7360dbf8b24fdbef73194b8ff5ea4dba31074cc7 Mon Sep 17 00:00:00 2001 From: Michael Webb Date: Tue, 9 Jul 2024 09:11:46 +0200 Subject: [PATCH] feat: rename propertyName to embeddingProperty --- .../utils/asserts-indexes-and-constraints.ts | 4 ++-- packages/graphql/src/graphql/directives/vector.ts | 2 +- .../schema-model/annotation/VectorAnnotation.ts | 2 +- .../annotations-parser/vector-annotation.test.ts | 4 ++-- .../directives/vector/vector-auth.int.test.ts | 14 +++++++------- .../directives/vector/vector-filtering.int.test.ts | 2 +- .../vector/vector-pagination.int.test.ts | 2 +- .../directives/vector/vector-query.int.test.ts | 2 +- .../directives/vector/vector-sorting.int.test.ts | 2 +- packages/graphql/tests/schema/vector.test.ts | 8 ++++++-- .../tests/tck/directives/vector/auth.test.ts | 14 +++++++------- .../tests/tck/directives/vector/match.test.ts | 2 +- .../tests/tck/directives/vector/phrase.test.ts | 2 +- .../tests/tck/directives/vector/score.test.ts | 2 +- 14 files changed, 33 insertions(+), 29 deletions(-) diff --git a/packages/graphql/src/classes/utils/asserts-indexes-and-constraints.ts b/packages/graphql/src/classes/utils/asserts-indexes-and-constraints.ts index 7da481ec1c..ab65b42aed 100644 --- a/packages/graphql/src/classes/utils/asserts-indexes-and-constraints.ts +++ b/packages/graphql/src/classes/utils/asserts-indexes-and-constraints.ts @@ -110,10 +110,10 @@ function checkVectorIndexes(entity: ConcreteEntity, existingIndexes: ExistingInd return; } - const propertyIsInIndex = existingIndex.properties.some((p) => p === index.propertyName); + const propertyIsInIndex = existingIndex.properties.some((p) => p === index.embeddingProperty); if (!propertyIsInIndex) { indexErrors.push( - `@vector index '${index.indexName}' on Node '${entity.name}' is missing property '${index.propertyName}'` + `@vector index '${index.indexName}' on Node '${entity.name}' is missing embedding property '${index.embeddingProperty}'` ); } diff --git a/packages/graphql/src/graphql/directives/vector.ts b/packages/graphql/src/graphql/directives/vector.ts index 3d342976b4..ceea09f03b 100644 --- a/packages/graphql/src/graphql/directives/vector.ts +++ b/packages/graphql/src/graphql/directives/vector.ts @@ -52,7 +52,7 @@ export const vectorDirective = new GraphQLDirective({ indexName: { type: new GraphQLNonNull(GraphQLString), }, - propertyName: { + embeddingProperty: { type: new GraphQLNonNull(GraphQLString), }, queryName: { diff --git a/packages/graphql/src/schema-model/annotation/VectorAnnotation.ts b/packages/graphql/src/schema-model/annotation/VectorAnnotation.ts index eb6889d7a4..5556fd4716 100644 --- a/packages/graphql/src/schema-model/annotation/VectorAnnotation.ts +++ b/packages/graphql/src/schema-model/annotation/VectorAnnotation.ts @@ -21,7 +21,7 @@ import type { Annotation } from "./Annotation"; export type VectorField = { indexName: string; - propertyName: string; + embeddingProperty: string; queryName: string; provider?: string; callback?: string; diff --git a/packages/graphql/src/schema-model/parser/annotations-parser/vector-annotation.test.ts b/packages/graphql/src/schema-model/parser/annotations-parser/vector-annotation.test.ts index a9fafbc987..44468ee4b2 100644 --- a/packages/graphql/src/schema-model/parser/annotations-parser/vector-annotation.test.ts +++ b/packages/graphql/src/schema-model/parser/annotations-parser/vector-annotation.test.ts @@ -42,7 +42,7 @@ describe("parseVectorAnnotation", () => { }, { kind: Kind.OBJECT_FIELD, - name: { kind: Kind.NAME, value: "propertyName" }, + name: { kind: Kind.NAME, value: "embeddingProperty" }, value: { kind: Kind.STRING, value: "name" }, }, { @@ -68,7 +68,7 @@ describe("parseVectorAnnotation", () => { indexes: [ { indexName: "ProductName", - propertyName: "name", + embeddingProperty: "name", queryName: "myQueryName", provider: "OpenAI", }, diff --git a/packages/graphql/tests/integration/directives/vector/vector-auth.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-auth.int.test.ts index 2babeff06f..636b4b53b7 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-auth.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-auth.int.test.ts @@ -142,7 +142,7 @@ describe("@vector directive - Auth", () => { } const typeDefs = /* GraphQL */ ` - type ${Person} @vector(indexes: [{ indexName: "${Person}Index", propertyName: "embedding", queryName: "${queryName}" }]) + type ${Person} @vector(indexes: [{ indexName: "${Person}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) @authorization(filter: [{ where: { node: { name: "$jwt.name" } } }]) { name: String! born: Int! @@ -221,7 +221,7 @@ describe("@vector directive - Auth", () => { } const typeDefs = /* GraphQL */ ` - type ${Person} @vector(indexes: [{ indexName: "${Person}Index", propertyName: "embedding", queryName: "${queryName}" }]) + type ${Person} @vector(indexes: [{ indexName: "${Person}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) @authorization(filter: [{ where: { node: { name: "$jwt.name" } } }]) { name: String! born: Int! @@ -298,7 +298,7 @@ describe("@vector directive - Auth", () => { roles: [String!]! } - type ${Person} @vector(indexes: [{ indexName: "${Person}Index", propertyName: "embedding", queryName: "${queryName}" }]) + type ${Person} @vector(indexes: [{ indexName: "${Person}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) @authorization(validate: [{ where: { jwt: { roles_INCLUDES: "admin" } } }]) { name: String! born: Int! @@ -394,7 +394,7 @@ describe("@vector directive - Auth", () => { roles: [String!]! } - type ${Person} @vector(indexes: [{ indexName: "${Person}Index", propertyName: "embedding", queryName: "${queryName}" }]) + type ${Person} @vector(indexes: [{ indexName: "${Person}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) @authorization(validate: [{ where: { jwt: { roles_INCLUDES: "admin" } } }]) { name: String! born: Int! @@ -461,7 +461,7 @@ describe("@vector directive - Auth", () => { } const typeDefs = /* GraphQL */ ` - type ${Person} @vector(indexes: [{ indexName: "${Person}Index", propertyName: "embedding", queryName: "${queryName}" }]) + type ${Person} @vector(indexes: [{ indexName: "${Person}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) @authorization(validate: [{ when: BEFORE, where: { node: { name: "$jwt.name" } } }]) { name: String! born: Int! @@ -541,7 +541,7 @@ describe("@vector directive - Auth", () => { } const typeDefs = /* GraphQL */ ` - type ${Person} @vector(indexes: [{ indexName: "${Person}Index", propertyName: "embedding", queryName: "${queryName}" }]) + type ${Person} @vector(indexes: [{ indexName: "${Person}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) @authorization(validate: [{ when: BEFORE, where: { node: { name: "$jwt.name" } } }]) { name: String! born: Int! @@ -612,7 +612,7 @@ describe("@vector directive - Auth", () => { roles: [String!]! } - type ${Person} @vector(indexes: [{ indexName: "${Person}Index", propertyName: "embedding", queryName: "${queryName}" }]) + type ${Person} @vector(indexes: [{ indexName: "${Person}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) @authorization(validate: [{ operations: [READ], where: { jwt: { roles_INCLUDES: "admin" } } }]) { name: String! born: Int! diff --git a/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts index 32627ceaa6..827fa9aa71 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-filtering.int.test.ts @@ -82,7 +82,7 @@ describe("@vector directive - filtering", () => { Movie = testHelper.createUniqueType("Movie"); const typeDefs = ` - type ${Movie.name} @vector(indexes: [{ indexName: "${Movie}Index", propertyName: "embedding", queryName: "${queryName}" }]) { + type ${Movie.name} @vector(indexes: [{ indexName: "${Movie}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) { title: String! released: Int! }`; diff --git a/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts index eb84a37613..04dcd1a713 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-pagination.int.test.ts @@ -83,7 +83,7 @@ describe("@vector directive - pagination", () => { Movie = testHelper.createUniqueType("Movie"); const typeDefs = ` - type ${Movie.name} @vector(indexes: [{ indexName: "${Movie}Index", propertyName: "embedding", queryName: "${queryName}" }]) { + type ${Movie.name} @vector(indexes: [{ indexName: "${Movie}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) { title: String! released: Int! }`; diff --git a/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts index a24fc029ee..37f8fe5832 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-query.int.test.ts @@ -78,7 +78,7 @@ describe("@vector directive - Query", () => { Person = testHelper.createUniqueType("Person"); const typeDefs = /* GraphQL */ ` - type ${Movie} @vector(indexes: [{ indexName: "${Movie}Index", propertyName: "embedding", queryName: "${queryName}" }]) { + type ${Movie} @vector(indexes: [{ indexName: "${Movie}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) { title: String! released: Int! actors: [${Person}!]! @relationship(type: "ACTED_IN", direction: IN) diff --git a/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts b/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts index b942fa647e..6d64078feb 100644 --- a/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts +++ b/packages/graphql/tests/integration/directives/vector/vector-sorting.int.test.ts @@ -77,7 +77,7 @@ describe("@vector directive - Query", () => { Movie = testHelper.createUniqueType("Movie"); const typeDefs = ` - type ${Movie.name} @vector(indexes: [{ indexName: "${Movie}Index", propertyName: "embedding", queryName: "${queryName}" }]) { + type ${Movie.name} @vector(indexes: [{ indexName: "${Movie}Index", embeddingProperty: "embedding", queryName: "${queryName}" }]) { title: String! released: Int! }`; diff --git a/packages/graphql/tests/schema/vector.test.ts b/packages/graphql/tests/schema/vector.test.ts index 3f01f3f5c3..3a131b9b4e 100644 --- a/packages/graphql/tests/schema/vector.test.ts +++ b/packages/graphql/tests/schema/vector.test.ts @@ -28,8 +28,12 @@ describe("@vector schema", () => { type Movie @vector( indexes: [ - { indexName: "MovieTitle", propertyName: "title", queryName: "titleQuery" } - { indexName: "MovieDescription", propertyName: "description", queryName: "descriptionQuery" } + { indexName: "MovieTitle", embeddingProperty: "title", queryName: "titleQuery" } + { + indexName: "MovieDescription" + embeddingProperty: "description" + queryName: "descriptionQuery" + } ] ) { title: String diff --git a/packages/graphql/tests/tck/directives/vector/auth.test.ts b/packages/graphql/tests/tck/directives/vector/auth.test.ts index 95bfc86f8f..8a880c2746 100644 --- a/packages/graphql/tests/tck/directives/vector/auth.test.ts +++ b/packages/graphql/tests/tck/directives/vector/auth.test.ts @@ -46,7 +46,7 @@ describe("Cypher -> vector -> Auth", () => { test("simple match with auth where", async () => { const typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) @authorization(filter: [{ where: { node: { director: { id: "$jwt.sub" } } } }]) { title: String director: [Person!]! @relationship(type: "DIRECTED", direction: IN) @@ -246,7 +246,7 @@ describe("Cypher -> vector -> Auth", () => { test("simple match with auth allow", async () => { const typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) @authorization(validate: [{ when: [BEFORE], where: { node: { director: { id: "$jwt.sub" } } } }]) { title: String director: [Person!]! @relationship(type: "DIRECTED", direction: IN) @@ -446,7 +446,7 @@ describe("Cypher -> vector -> Auth", () => { test("simple match with auth allow ALL", async () => { const typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) @authorization( validate: [{ when: [BEFORE], where: { node: { director_ALL: { id: "$jwt.sub" } } } }] ) { @@ -651,7 +651,7 @@ describe("Cypher -> vector -> Auth", () => { test("simple match with auth allow on connection node", async () => { const typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) @authorization( validate: [ { when: [BEFORE], where: { node: { directorConnection: { node: { id: "$jwt.sub" } } } } } @@ -855,7 +855,7 @@ describe("Cypher -> vector -> Auth", () => { test("simple match with auth allow on connection node ALL", async () => { const typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) @authorization( validate: [ { @@ -1065,7 +1065,7 @@ describe("Cypher -> vector -> Auth", () => { test("simple match with auth allow on connection edge", async () => { const typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) @authorization( validate: [ { when: [BEFORE], where: { node: { directorConnection: { edge: { year: 2020 } } } } } @@ -1270,7 +1270,7 @@ describe("Cypher -> vector -> Auth", () => { test("simple match with auth allow on connection edge ALL", async () => { const typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) @authorization( validate: [ { when: [BEFORE], where: { node: { directorConnection_ALL: { edge: { year: 2020 } } } } } diff --git a/packages/graphql/tests/tck/directives/vector/match.test.ts b/packages/graphql/tests/tck/directives/vector/match.test.ts index f2a5a304dd..ebfd3fbefe 100644 --- a/packages/graphql/tests/tck/directives/vector/match.test.ts +++ b/packages/graphql/tests/tck/directives/vector/match.test.ts @@ -30,7 +30,7 @@ describe("Vector index match", () => { beforeAll(() => { typeDefs = /* GraphQL */ ` - type Movie @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) { + type Movie @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) { title: String! released: Int! } diff --git a/packages/graphql/tests/tck/directives/vector/phrase.test.ts b/packages/graphql/tests/tck/directives/vector/phrase.test.ts index 530c7a673d..611873fd8f 100644 --- a/packages/graphql/tests/tck/directives/vector/phrase.test.ts +++ b/packages/graphql/tests/tck/directives/vector/phrase.test.ts @@ -30,7 +30,7 @@ describe("phrase input - genAI plugin", () => { beforeAll(() => { typeDefs = /* GraphQL */ ` type Movie - @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}", provider: OpenAI }]) { + @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}", provider: OpenAI }]) { title: String! released: Int! } diff --git a/packages/graphql/tests/tck/directives/vector/score.test.ts b/packages/graphql/tests/tck/directives/vector/score.test.ts index e97a7be37c..6d3e8e010d 100644 --- a/packages/graphql/tests/tck/directives/vector/score.test.ts +++ b/packages/graphql/tests/tck/directives/vector/score.test.ts @@ -30,7 +30,7 @@ describe("Cypher -> vector -> Score", () => { beforeAll(() => { typeDefs = /* GraphQL */ ` - type Movie @vector(indexes: [{ indexName: "movie_index", propertyName: "movieVector", queryName: "${queryName}" }]) { + type Movie @vector(indexes: [{ indexName: "movie_index", embeddingProperty: "movieVector", queryName: "${queryName}" }]) { title: String! } `;