|
If I’ve understood correctly, the code allows for a single graph node to have multiple vectors, but I don’t see a way to implement this. Is this a supported feature or a design choice? |
Replies: 3 comments 1 reply
|
If by one-to-many you mean one graph node with multiple vector representations, yes, current code/docs support it, but not as repeated
NamedEmbeddings map[string][]float32
ChunkEmbeddings [][]float32The architecture docs describe the split like this:
The clean user-facing path for multiple named vectors appears to be the Qdrant gRPC layer: create a collection with named vector configs, for example For Cypher vector search, So: supported by design, but the API matters. Use Qdrant gRPC for named vectors, use chunked embeddings for long content, and use separate graph nodes plus edges if each vector needs independent graph properties or relationships. |
|
Yes, as @krotname stated, this is supported, including from Cypher. For named vectors, the Cypher vector index property maps to the CREATE VECTOR INDEX title_idx
FOR (n:Doc) ON (n.title)
OPTIONS {indexConfig: {`vector.dimensions`: 1536, `vector.similarity_function`: 'cosine'}};
CALL db.index.vector.queryNodes('title_idx', 10, $queryVector)
YIELD node, score
RETURN node, score; |
|
Thanks a lot for your answers! They were incredibly helpful! I’m still exploring the concept of creating RAGs for local AI usage and production knowledge bases. Initially, I had the idea that each node represents a concept or service, and each vector represents a fact. Therefore, a service could have a vast list of ongoing facts about it, such as how it operates, how it accesses the database, how it handles payloads, aggregation logic, business logic, and so on. If I understand correctly, I should use named embeddings to tie the list of facts to the node. Alternatively, I could split log documents into chunks, but then I would lose control over the chunk per “fact.” There’s always the “native” way of creating a new node for each “fact” and connecting it to the “parent” node. Did you find a use-case for embedding naming? |
If by one-to-many you mean one graph node with multiple vector representations, yes, current code/docs support it, but not as repeated
embeddingproperties.storage.Nodehas two dedicated fields:The architecture docs describe the split like this:
ChunkEmbeddings;[0]is the main embedding and[1..N]are additional chunks;NamedEmbeddings, with an unnamed vector stored as"default";node.Properties[index.property]for Cypher compatibility.The clean user-facing path for multiple named vectors appears to be the Qdrant gRPC layer:…