@@ -55,11 +55,19 @@ def docs_to_kg_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.D
5555 "Each relationship should be a tuple of (subject, predicate, object)." )))
5656
5757 with chunk ["relationships" ]["relationships" ].row () as relationship :
58+ relationship ["subject_embedding" ] = relationship ["subject" ].transform (
59+ cocoindex .functions .SentenceTransformerEmbed (
60+ model = "sentence-transformers/all-MiniLM-L6-v2" ))
61+ relationship ["object_embedding" ] = relationship ["object" ].transform (
62+ cocoindex .functions .SentenceTransformerEmbed (
63+ model = "sentence-transformers/all-MiniLM-L6-v2" ))
5864 relationships .collect (
5965 id = cocoindex .GeneratedField .UUID ,
6066 subject = relationship ["subject" ],
61- predicate = relationship ["predicate " ],
67+ subject_embedding = relationship ["subject_embedding " ],
6268 object = relationship ["object" ],
69+ object_embedding = relationship ["object_embedding" ],
70+ predicate = relationship ["predicate" ],
6371 )
6472
6573 relationships .export (
@@ -69,14 +77,34 @@ def docs_to_kg_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.D
6977 rel_type = "RELATIONSHIP" ,
7078 source = cocoindex .storages .Neo4jRelationshipEndSpec (
7179 label = "Entity" ,
72- fields = [cocoindex .storages .Neo4jFieldMapping (field_name = "subject" , node_field_name = "value" )]
80+ fields = [
81+ cocoindex .storages .Neo4jFieldMapping (
82+ field_name = "subject" , node_field_name = "value" ),
83+ cocoindex .storages .Neo4jFieldMapping (
84+ field_name = "subject_embedding" , node_field_name = "embedding" ),
85+ ]
7386 ),
7487 target = cocoindex .storages .Neo4jRelationshipEndSpec (
7588 label = "Entity" ,
76- fields = [cocoindex .storages .Neo4jFieldMapping (field_name = "object" , node_field_name = "value" )]
89+ fields = [
90+ cocoindex .storages .Neo4jFieldMapping (
91+ field_name = "object" , node_field_name = "value" ),
92+ cocoindex .storages .Neo4jFieldMapping (
93+ field_name = "object_embedding" , node_field_name = "embedding" ),
94+ ]
7795 ),
7896 nodes = {
79- "Entity" : cocoindex .storages .Neo4jRelationshipNodeSpec (key_field_name = "value" ),
97+ "Entity" : cocoindex .storages .Neo4jRelationshipNodeSpec (
98+ index_options = cocoindex .IndexOptions (
99+ primary_key_fields = ["value" ],
100+ vector_index_defs = [
101+ cocoindex .VectorIndexDef (
102+ field_name = "embedding" ,
103+ metric = cocoindex .VectorSimilarityMetric .COSINE_SIMILARITY ,
104+ ),
105+ ],
106+ ),
107+ ),
80108 },
81109 ),
82110 primary_key_fields = ["id" ],
0 commit comments