You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geaflow.apache.org by cb...@apache.org on 2026/01/21 07:17:02 UTC

(geaflow) branch master updated: feat(ai): Adding Lucene & Embedding-Based Search Operators to Apache GeaFlow (incubating) for Lightweight Context Memory (#716)

This is an automated email from the ASF dual-hosted git repository.

cbqiao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/geaflow.git


The following commit(s) were added to refs/heads/master by this push:
     new ee4a0c52a feat(ai): Adding Lucene & Embedding-Based Search Operators to Apache GeaFlow (incubating) for Lightweight Context Memory (#716)
ee4a0c52a is described below

commit ee4a0c52a4f8725ba52af308a63763fc1ab94d07
Author: Leomrlin <12...@qq.com>
AuthorDate: Wed Jan 21 15:16:58 2026 +0800

    feat(ai): Adding Lucene & Embedding-Based Search Operators to Apache GeaFlow (incubating) for Lightweight Context Memory (#716)
    
    * init dcp code
    
    * add lucene search
    
    * add prompt formatter
    
    * add test case
    
    * handle ldbc id conflict
    
    * support llm
    
    * support embedding index store
    
    * add embedding op
    
    * refine test case
    
    * delete test data
    
    * add MockChatRobot
    
    * fix checkstyle
    
    * fix pom
    
    * fix finishReason
    
    * fix ci tests
    
    * fix ci tests
    
    * fix comments
    
    * fix codestyle
    
    * support mutable graph
    
    * fix comments
---
 geaflow-ai/pom.xml                                 | 127 ++++++++
 .../org/apache/geaflow/ai/GraphMemoryServer.java   | 110 +++++++
 .../org/apache/geaflow/ai/common/ErrorCode.java    |  30 ++
 .../apache/geaflow/ai/common/config/Constants.java |  46 +++
 .../ai/common/config/GraphMemoryConfigKeys.java    |  23 ++
 .../ai/common/model/AbstractModelService.java      |  37 +++
 .../geaflow/ai/common/model/ChatService.java       |  40 +++
 .../geaflow/ai/common/model/EmbeddingResponse.java |  47 +++
 .../geaflow/ai/common/model/EmbeddingService.java  |  59 ++++
 .../geaflow/ai/common/model/ModelConfig.java       |  70 ++++
 .../geaflow/ai/common/model/ModelContext.java      |  73 +++++
 .../geaflow/ai/common/model/ModelEmbedding.java    |  58 ++++
 .../geaflow/ai/common/model/ModelMessage.java      |  31 ++
 .../apache/geaflow/ai/common/model/ModelUtils.java |  51 +++
 .../ai/common/model/OkHttpDirectConnector.java     | 120 +++++++
 .../geaflow/ai/common/model/RemoteModelClient.java |  78 +++++
 .../apache/geaflow/ai/common/model/Response.java   |  57 ++++
 .../geaflow/ai/engine/GraphComputeEngine.java      |  23 ++
 .../geaflow/ai/graph/EmptyGraphAccessor.java       |  69 ++++
 .../java/org/apache/geaflow/ai/graph/Graph.java    |  49 +++
 .../org/apache/geaflow/ai/graph/GraphAccessor.java |  43 +++
 .../org/apache/geaflow/ai/graph/GraphEdge.java     |  63 ++++
 .../org/apache/geaflow/ai/graph/GraphEntity.java   |  25 ++
 .../org/apache/geaflow/ai/graph/GraphVertex.java   |  63 ++++
 .../geaflow/ai/graph/LocalMemoryGraphAccessor.java | 158 +++++++++
 .../geaflow/ai/graph/MemoryMutableGraph.java       |  58 ++++
 .../org/apache/geaflow/ai/graph/MutableGraph.java  |  36 ++
 .../apache/geaflow/ai/graph/io/CsvFileReader.java  | 153 +++++++++
 .../java/org/apache/geaflow/ai/graph/io/Edge.java  |  76 +++++
 .../org/apache/geaflow/ai/graph/io/EdgeGroup.java  | 132 ++++++++
 .../org/apache/geaflow/ai/graph/io/EdgeSchema.java |  60 ++++
 .../apache/geaflow/ai/graph/io/EntityGroup.java    |  23 ++
 .../geaflow/ai/graph/io/GraphFileReader.java       |  80 +++++
 .../apache/geaflow/ai/graph/io/GraphSchema.java    | 113 +++++++
 .../apache/geaflow/ai/graph/io/MemoryGraph.java    | 191 +++++++++++
 .../geaflow/ai/graph/io/ResourceFileScanner.java   |  65 ++++
 .../org/apache/geaflow/ai/graph/io/Schema.java     |  30 ++
 .../org/apache/geaflow/ai/graph/io/Vertex.java     |  70 ++++
 .../apache/geaflow/ai/graph/io/VertexGroup.java    | 104 ++++++
 .../apache/geaflow/ai/graph/io/VertexSchema.java   |  53 +++
 .../geaflow/ai/index/EmbeddingIndexStore.java      | 257 +++++++++++++++
 .../ai/index/EntityAttributeIndexStore.java        |  62 ++++
 .../org/apache/geaflow/ai/index/IndexStore.java    |  29 ++
 .../apache/geaflow/ai/index/IndexStoreCache.java   |  52 +++
 .../geaflow/ai/index/vector/EmbeddingVector.java   |  82 +++++
 .../apache/geaflow/ai/index/vector/IVector.java    |  29 ++
 .../geaflow/ai/index/vector/KeywordVector.java     |  70 ++++
 .../geaflow/ai/index/vector/MagnitudeVector.java   |  38 +++
 .../geaflow/ai/index/vector/TraversalVector.java   |  57 ++++
 .../apache/geaflow/ai/index/vector/VectorType.java |  27 ++
 .../geaflow/ai/operator/EmbeddingOperator.java     | 194 +++++++++++
 .../geaflow/ai/operator/GraphSearchStore.java      | 151 +++++++++
 .../geaflow/ai/operator/SearchConstants.java       |  32 ++
 .../apache/geaflow/ai/operator/SearchOperator.java |  29 ++
 .../apache/geaflow/ai/operator/SearchStore.java    | 118 +++++++
 .../apache/geaflow/ai/operator/SearchUtils.java    | 108 ++++++
 .../geaflow/ai/operator/SessionOperator.java       | 143 ++++++++
 .../org/apache/geaflow/ai/search/VectorSearch.java |  75 +++++
 .../geaflow/ai/session/SessionManagement.java      |  62 ++++
 .../org/apache/geaflow/ai/subgraph/SubGraph.java   |  57 ++++
 .../apache/geaflow/ai/verbalization/Context.java   |  36 ++
 .../geaflow/ai/verbalization/PromptFormatter.java  |  33 ++
 .../SubgraphSemanticPromptFunction.java            |  90 +++++
 .../ai/verbalization/VerbalizationFunction.java    |  33 ++
 geaflow-ai/src/main/resources/log4j.properties     |  26 ++
 .../org/apache/geaflow/ai/GraphMemoryTest.java     | 196 +++++++++++
 .../org/apache/geaflow/ai/LdbcPromptFormatter.java | 315 ++++++++++++++++++
 .../java/org/apache/geaflow/ai/MockChatRobot.java  |  49 +++
 .../org/apache/geaflow/ai/MutableGraphTest.java    | 142 ++++++++
 ...-0ea3b18b-e932-4946-9be9-d17b750eafea-c0001.csv |  58 ++++
 ...0-77bb2680-0143-453b-a57e-237bb2468cf1-c000.csv |  36 ++
 ...0-d5685860-f0ca-4b57-98b1-cc9b688b30c6-c000.csv |   5 +
 ...0-86f5e365-c8eb-42b8-9c45-be1136749ebf-c000.csv |   2 +
 ...0-fed82766-b5eb-4724-bf11-2cb6b0c498d1-c000.csv |   1 +
 ...0-3217ef34-4a71-4b35-a6c7-40d0ce55e745-c000.csv |   2 +
 ...0-f8e268f3-1ce7-4f7c-a636-2afefbb1a96b-c000.csv |   2 +
 ...0-8f8b7c0e-8a61-43d0-b118-d45e51ac8346-c000.csv |   8 +
 ...0-fcbe7eed-213e-4044-82ac-1deb7607d428-c000.csv |   1 +
 ...0-ed92dadb-3b80-45de-a6ed-cb51324d9222-c000.csv |   2 +
 ...0-a90294ce-d86a-4f6a-b660-9367cc6530b9-c000.csv |   1 +
 ...0-4b9ded23-dbc4-4af1-99cd-2546b86e2a1e-c000.csv |   1 +
 ...0-d96c104a-09e8-4c00-8480-c5ff5bd0774e-c000.csv |   1 +
 ...0-8e928ee8-4c50-4b3a-a039-7df49c43271c-c000.csv |   3 +
 ...0-8119e7ba-eef1-4531-a329-fe69aae3a842-c000.csv |   1 +
 ...0-cc303aad-ca12-4d62-a0fa-f666cd4bd0a8-c000.csv |   1 +
 ...0-bbdf70c1-9235-4ae5-a5bd-315c602b7aa7-c000.csv |   1 +
 ...0-15c95f3c-1bb2-437a-88da-44454947912b-c000.csv |  16 +
 ...0-80467545-319b-45b9-9df7-5bf613102255-c000.csv |   2 +
 ...0-773b544a-a4e8-4669-9d72-6f9563e37e0a-c000.csv |   1 +
 ...0-8955972b-aaaf-431b-af04-bb8b8371303a-c000.csv |   1 +
 ...0-e23c300a-6036-4119-afaf-d4a2e45a602c-c000.csv |   1 +
 ...0-773c5c1f-ce07-41a9-ab10-836b6a201aab-c000.csv |   1 +
 ...0-ab6f4085-f12a-4818-a371-e07cbb2f8fe8-c000.csv |  20 ++
 ...0-7457dc74-44d7-4ee0-8201-9940057bf0e8-c000.csv |  13 +
 ...0-76abe36a-60da-4e94-82fa-326be3dd1915-c000.csv |   8 +
 ...0-514b3315-27ef-4bf2-b6c8-85454d8c50d1-c000.csv |   3 +
 ...0-552a5973-be8c-4a64-8495-12475edb9268-c000.csv |   1 +
 ...0-a7819ae9-3a8a-4b0d-bda9-42afd23b05b7-c000.csv |   1 +
 ...0-59a40ae1-065f-497c-a4f0-5630f603c3cd-c000.csv |   1 +
 ...0-cc5fb343-f815-4288-b7c0-8251d3d39696-c000.csv |   1 +
 .../test/resources/index/LDBCEmbeddingIndexStore   | 362 +++++++++++++++++++++
 pom.xml                                            |  23 +-
 102 files changed, 5957 insertions(+), 10 deletions(-)

diff --git a/geaflow-ai/pom.xml b/geaflow-ai/pom.xml
new file mode 100644
index 000000000..75cea1e79
--- /dev/null
+++ b/geaflow-ai/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.geaflow</groupId>
+        <artifactId>geaflow-parent</artifactId>
+        <version>0.8.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>geaflow-ai</artifactId>
+
+    <properties>
+        <solon-mcp.version>3.5.1</solon-mcp.version>
+        <junit.version>5.10.1</junit.version>
+        <slf4j.version>1.7.15</slf4j.version>
+        <log4j.version>1.2.17</log4j.version>
+        <log4j.slf4j.version>2.17.1</log4j.slf4j.version>
+        <lmax.disrupter.veresion>3.4.4</lmax.disrupter.veresion>
+        <lucene.version>8.11.2</lucene.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>${slf4j.version}</version>
+        </dependency>
+
+        <!-- SLF4J to Log4j 1.2 Binding -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>${slf4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+
+        <!-- SLF4J to Log4j 2 Binding -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <version>${log4j.slf4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.slf4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j.slf4j.version}</version>
+        </dependency>
+
+        <!-- Lucene Core -->
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-core</artifactId>
+            <version>${lucene.version}</version>
+        </dependency>
+
+        <!-- Lucene Query Parser -->
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-queryparser</artifactId>
+            <version>${lucene.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.lmax</groupId>
+            <artifactId>disruptor</artifactId>
+            <version>${lmax.disrupter.veresion}</version>
+        </dependency>
+
+      <dependency>
+        <groupId>org.apache.geaflow</groupId>
+        <artifactId>geaflow-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+
+        <!-- test -->
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>sonatype</id>
+            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+</project>
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/GraphMemoryServer.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/GraphMemoryServer.java
new file mode 100644
index 000000000..f48324c7f
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/GraphMemoryServer.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.graph.GraphAccessor;
+import org.apache.geaflow.ai.index.EmbeddingIndexStore;
+import org.apache.geaflow.ai.index.EntityAttributeIndexStore;
+import org.apache.geaflow.ai.index.IndexStore;
+import org.apache.geaflow.ai.operator.EmbeddingOperator;
+import org.apache.geaflow.ai.operator.SearchOperator;
+import org.apache.geaflow.ai.operator.SessionOperator;
+import org.apache.geaflow.ai.search.VectorSearch;
+import org.apache.geaflow.ai.session.SessionManagement;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+import org.apache.geaflow.ai.verbalization.Context;
+import org.apache.geaflow.ai.verbalization.VerbalizationFunction;
+
+public class GraphMemoryServer {
+
+    private final SessionManagement sessionManagement = SessionManagement.INSTANCE;
+    private final List<GraphAccessor> graphAccessors = new ArrayList<>();
+    private final List<IndexStore> indexStores = new ArrayList<>();
+
+    public void addGraphAccessor(GraphAccessor graph) {
+        if (graph != null) {
+            graphAccessors.add(graph);
+        }
+    }
+
+    public void addIndexStore(IndexStore indexStore) {
+        if (indexStore != null) {
+            indexStores.add(indexStore);
+        }
+    }
+
+    public String createSession() {
+        String sessionId = sessionManagement.createSession();
+        if (sessionId == null) {
+            throw new RuntimeException("Cannot create new session");
+        }
+        return sessionId;
+    }
+
+    public String search(VectorSearch search) {
+        String sessionId = search.getSessionId();
+        if (sessionId == null || sessionId.isEmpty()) {
+            throw new RuntimeException("Session id is empty");
+        }
+        if (!sessionManagement.sessionExists(sessionId)) {
+            sessionManagement.createSession(sessionId);
+        }
+
+        for (IndexStore indexStore : indexStores) {
+            if (indexStore instanceof EntityAttributeIndexStore) {
+                SessionOperator searchOperator = new SessionOperator(graphAccessors.get(0), indexStore);
+                applySearch(sessionId, searchOperator, search);
+            }
+            if (indexStore instanceof EmbeddingIndexStore) {
+                EmbeddingOperator embeddingOperator = new EmbeddingOperator(graphAccessors.get(0), indexStore);
+                applySearch(sessionId, embeddingOperator, search);
+            }
+        }
+        return sessionId;
+    }
+
+    private void applySearch(String sessionId, SearchOperator operator, VectorSearch search) {
+        SessionManagement manager = SessionManagement.INSTANCE;
+        if (!manager.sessionExists(sessionId)) {
+            return;
+        }
+        List<SubGraph> result = operator.apply(manager.getSubGraph(sessionId), search);
+        manager.setSubGraph(sessionId, result);
+    }
+
+    public Context verbalize(String sessionId, VerbalizationFunction verbalizationFunction) {
+        List<SubGraph> subGraphList = sessionManagement.getSubGraph(sessionId);
+        List<String> subGraphStringList = new ArrayList<>(subGraphList.size());
+        for (SubGraph subGraph : subGraphList) {
+            subGraphStringList.add(verbalizationFunction.verbalize(subGraph));
+        }
+        subGraphStringList = subGraphStringList.stream().sorted().collect(Collectors.toList());
+        StringBuilder stringBuilder = new StringBuilder();
+        for (String subGraph : subGraphStringList) {
+            stringBuilder.append(subGraph).append("\n");
+        }
+        stringBuilder.append(verbalizationFunction.verbalizeGraphSchema());
+        return new Context(stringBuilder.toString());
+    }
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/ErrorCode.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/ErrorCode.java
new file mode 100644
index 000000000..34125de39
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/ErrorCode.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common;
+
+public class ErrorCode {
+
+    public static final int SUCCESS = 0;
+    public static final int GRAPH_ENTITY_GROUP_NOT_EXISTS = 100001;
+    public static final int GRAPH_ENTITY_GROUP_NOT_MATCH = 100002;
+    public static final int GRAPH_ENTITY_GROUP_INSERT_FAILED = 100003;
+    public static final int GRAPH_ENTITY_GROUP_UPDATE_FAILED = 100004;
+    public static final int GRAPH_ENTITY_GROUP_REMOVE_FAILED = 100005;
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/config/Constants.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/config/Constants.java
new file mode 100644
index 000000000..676ab0810
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/config/Constants.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.config;
+
+public class Constants {
+
+    public static String MODEL_CONTEXT_ROLE_USER = "user";
+    public static String PREFIX_V = "V";
+    public static String PREFIX_E = "E";
+    public static String PREFIX_GRAPH = "GRAPH";
+    public static String PREFIX_TMP_SESSION = "TmpSession-";
+
+    public static int HTTP_CALL_TIMEOUT_SECONDS = 300;
+    public static int HTTP_CONNECT_TIMEOUT_SECONDS = 300;
+    public static int HTTP_READ_TIMEOUT_SECONDS = 300;
+    public static int HTTP_WRITE_TIMEOUT_SECONDS = 300;
+
+    public static int MODEL_CLIENT_RETRY_TIMES = 10;
+    public static int MODEL_CLIENT_RETRY_INTERVAL_MS = 3000;
+
+    public static int EMBEDDING_INDEX_STORE_BATCH_SIZE = 32;
+    public static int EMBEDDING_INDEX_STORE_REPORT_SIZE = 100;
+    public static int EMBEDDING_INDEX_STORE_FLUSH_WRITE_SIZE = 1024;
+    public static int EMBEDDING_INDEX_STORE_SPLIT_TEXT_CHUNK_SIZE = 128;
+
+    public static double EMBEDDING_OPERATE_DEFAULT_THRESHOLD = 0.5;
+    public static int EMBEDDING_OPERATE_DEFAULT_TOPN = 50;
+    public static int GRAPH_SEARCH_STORE_DEFAULT_TOPN = 30;
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/config/GraphMemoryConfigKeys.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/config/GraphMemoryConfigKeys.java
new file mode 100644
index 000000000..5f288787d
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/config/GraphMemoryConfigKeys.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.config;
+
+public class GraphMemoryConfigKeys {
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/AbstractModelService.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/AbstractModelService.java
new file mode 100644
index 000000000..a2ffd2b49
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/AbstractModelService.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+public abstract class AbstractModelService {
+
+    public ModelConfig getModelConfig() {
+        return modelConfig;
+    }
+
+    public void setModelConfig(ModelConfig modelConfig) {
+        this.modelConfig = modelConfig;
+    }
+
+    private ModelConfig modelConfig;
+
+    public AbstractModelService(ModelConfig modelConfig) {
+        this.modelConfig = modelConfig;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ChatService.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ChatService.java
new file mode 100644
index 000000000..4101a6231
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ChatService.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+public class ChatService extends AbstractModelService {
+
+    public ChatService() {
+        super(new ModelConfig());
+    }
+
+    public ChatService(String model) {
+        super(new ModelConfig());
+        getModelConfig().setModel(model);
+    }
+
+    public String chat(String sentence) {
+        RemoteModelClient model = new RemoteModelClient();
+        ModelContext context = ModelContext.emptyContext();
+        context.setModelInfo(getModelConfig());
+        context.userSay(sentence);
+        return model.chat(context);
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/EmbeddingResponse.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/EmbeddingResponse.java
new file mode 100644
index 000000000..d8bcd9a34
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/EmbeddingResponse.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+import com.google.gson.annotations.SerializedName;
+import java.util.List;
+
+public class EmbeddingResponse {
+
+    public List<EmbeddingVector> data;
+    public String model;
+    public String object;
+    public Response.Usage usage;
+
+    public static class EmbeddingVector {
+        public int index;
+        public double[] embedding;
+    }
+
+    public static class Usage {
+        @SerializedName("completion_tokens")
+        public int completionTokens;
+        @SerializedName("prompt_tokens")
+        public int promptTokens;
+        @SerializedName("total_tokens")
+        public int totalTokens;
+
+    }
+
+}
\ No newline at end of file
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/EmbeddingService.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/EmbeddingService.java
new file mode 100644
index 000000000..2ad134762
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/EmbeddingService.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+import com.google.gson.Gson;
+import java.util.List;
+
+public class EmbeddingService extends AbstractModelService {
+
+    public EmbeddingService() {
+        super(new ModelConfig());
+    }
+
+    public EmbeddingService(String model) {
+        super(new ModelConfig());
+        getModelConfig().setModel(model);
+    }
+
+    public String embedding(String... inputs) {
+        RemoteModelClient model = new RemoteModelClient();
+        ModelEmbedding context = ModelEmbedding.embedding(getModelConfig(), inputs);
+        List<EmbeddingResult> embeddingResults = model.embedding(context);
+        Gson gson = new Gson();
+        StringBuilder builder = new StringBuilder();
+        for (EmbeddingResult result : embeddingResults) {
+            builder.append("\n");
+            String json = gson.toJson(result);
+            builder.append(json);
+        }
+        return builder.toString();
+    }
+
+    public static class EmbeddingResult {
+        public String input;
+        public double[] embedding;
+
+        public EmbeddingResult(String input, double[] embedding) {
+            this.input = input;
+            this.embedding = embedding;
+        }
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelConfig.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelConfig.java
new file mode 100644
index 000000000..55ab1fcc1
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelConfig.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+public class ModelConfig {
+
+    private String model;
+    private String url;
+    private String api;
+    private String userToken;
+
+    public ModelConfig() {
+    }
+
+    public ModelConfig(String model, String url, String api, String userToken) {
+        this.model = model;
+        this.url = url;
+        this.api = api;
+        this.userToken = userToken;
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public void setModel(String model) {
+        this.model = model;
+    }
+
+    public String getUserToken() {
+        return userToken;
+    }
+
+    public void setUserToken(String userToken) {
+        this.userToken = userToken;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getApi() {
+        return api;
+    }
+
+    public void setApi(String api) {
+        this.api = api;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelContext.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelContext.java
new file mode 100644
index 000000000..94dfc7952
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelContext.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+import org.apache.geaflow.ai.common.config.Constants;
+
+public class ModelContext {
+
+    public String model;
+    public ModelMessage[] messages;
+    private ModelConfig modelInfo;
+
+    public ModelContext(ModelConfig modelInfo, ModelMessage[] messages) {
+        this.modelInfo = modelInfo;
+        this.messages = messages;
+        if (this.modelInfo != null) {
+            this.model = this.modelInfo.getModel();
+        }
+    }
+
+    public static ModelContext emptyContext() {
+        return new ModelContext(null, new ModelMessage[0]);
+    }
+
+    public ModelConfig getModelInfo() {
+        return modelInfo;
+    }
+
+    public void setModelInfo(ModelConfig modelInfo) {
+        this.modelInfo = modelInfo;
+        if (this.modelInfo != null) {
+            this.model = this.modelInfo.getModel();
+        }
+    }
+
+    public ModelContext userSay(String sentence) {
+        ModelMessage msg = new ModelMessage(Constants.MODEL_CONTEXT_ROLE_USER, sentence);
+        ModelMessage[] newMessages = new ModelMessage[messages.length + 1];
+        for (int i = 0; i < messages.length; i++) {
+            newMessages[i] = messages[i];
+        }
+        newMessages[messages.length] = msg;
+        messages = newMessages;
+        return this;
+    }
+
+
+    public ModelMessage[] getMessages() {
+        return messages;
+    }
+
+    public void setMessages(ModelMessage[] messages) {
+        this.messages = messages;
+    }
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelEmbedding.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelEmbedding.java
new file mode 100644
index 000000000..6cfe4a428
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelEmbedding.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+public class ModelEmbedding {
+
+    public String model;
+    public String[] input;
+    private ModelConfig modelInfo;
+
+    public ModelEmbedding(ModelConfig modelInfo, String[] inputs) {
+        this.modelInfo = modelInfo;
+        this.input = inputs;
+        if (this.modelInfo != null) {
+            this.model = this.modelInfo.getModel();
+        }
+    }
+
+    public static ModelEmbedding embedding(ModelConfig modelInfo, String... strings) {
+        return new ModelEmbedding(modelInfo, strings);
+    }
+
+    public ModelConfig getModelInfo() {
+        return modelInfo;
+    }
+
+    public void setModelInfo(ModelConfig modelInfo) {
+        this.modelInfo = modelInfo;
+        if (this.modelInfo != null) {
+            this.model = this.modelInfo.getModel();
+        }
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public void setModel(String model) {
+        this.model = model;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelMessage.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelMessage.java
new file mode 100644
index 000000000..417fce017
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelMessage.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+public class ModelMessage {
+
+    public String role;
+    public String content;
+
+    public ModelMessage(String role, String content) {
+        this.role = role;
+        this.content = content;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelUtils.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelUtils.java
new file mode 100644
index 000000000..91a27d5e7
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/ModelUtils.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+
+public class ModelUtils {
+
+    public static List<String> splitLongText(int maxChunkSize, String... textList) {
+        List<String> chunks = new ArrayList<>();
+        for (String text : textList) {
+            for (int i = 0; i < text.length(); i += maxChunkSize) {
+                int end = Math.min(i + maxChunkSize, text.length());
+                chunks.add(text.substring(i, end));
+            }
+        }
+        return chunks;
+    }
+
+    public static String getGraphEntityKey(GraphEntity entity) {
+        if (entity instanceof GraphVertex) {
+            return Constants.PREFIX_V + ((GraphVertex) entity).getVertex().getId() + entity.getLabel();
+        } else if (entity instanceof GraphEdge) {
+            return Constants.PREFIX_E + ((GraphEdge) entity).getEdge().getSrcId()
+                    + entity.getLabel() + ((GraphEdge) entity).getEdge().getDstId();
+        }
+        return "";
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/OkHttpDirectConnector.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/OkHttpDirectConnector.java
new file mode 100644
index 000000000..b7d1d3d23
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/OkHttpDirectConnector.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+import com.google.gson.Gson;
+import java.io.IOException;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OkHttpDirectConnector {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(OkHttpDirectConnector.class);
+
+    private static final Gson GSON = new Gson();
+    private static OkHttpClient client;
+
+    private final String endpoint;
+    private final String useApi;
+    private final String userToken;
+
+    public OkHttpDirectConnector(String endpoint, String useApi, String userToken) {
+        this.endpoint = endpoint;
+        this.useApi = useApi;
+        this.userToken = userToken;
+        if (client == null) {
+            OkHttpClient.Builder builder = new OkHttpClient.Builder();
+            builder.callTimeout(Constants.HTTP_CALL_TIMEOUT_SECONDS, TimeUnit.SECONDS);
+            builder.connectTimeout(Constants.HTTP_CONNECT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
+            builder.readTimeout(Constants.HTTP_READ_TIMEOUT_SECONDS, TimeUnit.SECONDS);
+            builder.writeTimeout(Constants.HTTP_WRITE_TIMEOUT_SECONDS, TimeUnit.SECONDS);
+            client = builder.build();
+        }
+    }
+
+    public org.apache.geaflow.ai.common.model.Response post(String bodyJson) {
+        RequestBody requestBody = RequestBody.create(
+                MediaType.parse("application/json; charset=utf-8"),
+                bodyJson
+        );
+
+        String url = endpoint + useApi;
+        LOGGER.info(url);
+        Request request = new Request.Builder()
+                .url(url)
+                .addHeader("Authorization", "Bearer " + userToken)
+                .addHeader("Content-Type", "application/json; charset=utf-8")
+                .post(requestBody)
+                .build();
+
+        try (okhttp3.Response response = client.newCall(request).execute()) {
+            if (response.isSuccessful() && response.body() != null) {
+                String responseBody = response.body().string();
+                return GSON.fromJson(responseBody, org.apache.geaflow.ai.common.model.Response.class);
+            } else {
+                LOGGER.info("Request failed with code: " + response.code());
+            }
+        } catch (IOException e) {
+            LOGGER.error("Http connect exception", e);
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
+
+    public EmbeddingResponse embeddingPost(String bodyJson) {
+        RequestBody requestBody = RequestBody.create(
+                MediaType.parse("application/json; charset=utf-8"),
+                bodyJson
+        );
+
+        String url = endpoint + useApi;
+        Request request = new Request.Builder()
+                .url(url)
+                .addHeader("Authorization", "Bearer " + userToken)
+                .addHeader("Content-Type", "application/json; charset=utf-8")
+                .post(requestBody)
+                .build();
+
+        try (okhttp3.Response response = client.newCall(request).execute()) {
+            if (response.isSuccessful() && response.body() != null) {
+                String responseBody = response.body().string();
+                return GSON.fromJson(responseBody, EmbeddingResponse.class);
+            } else {
+                LOGGER.info("Request failed with code: " + response.code());
+                LOGGER.info("Request failed with request bodyJson: "
+                        + bodyJson);
+                LOGGER.info("Request failed with response body: "
+                        + Objects.requireNonNull(response.body()).string());
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/RemoteModelClient.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/RemoteModelClient.java
new file mode 100644
index 000000000..c37e5e7ce
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/RemoteModelClient.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+import com.google.gson.Gson;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.apache.geaflow.common.utils.RetryCommand;
+
+public class RemoteModelClient {
+
+    public String chat(ModelContext context) {
+        ModelConfig info = context.getModelInfo();
+        OkHttpDirectConnector connector = new OkHttpDirectConnector(
+                info.getUrl(), info.getApi(), info.getUserToken());
+        String request = new Gson().toJson(context);
+        org.apache.geaflow.ai.common.model.Response response = RetryCommand.run(() -> {
+            return connector.post(request);
+        }, Constants.MODEL_CLIENT_RETRY_TIMES, Constants.MODEL_CLIENT_RETRY_INTERVAL_MS);
+        if (response.choices != null && !response.choices.isEmpty()) {
+            for (Response.Choice choice : response.choices) {
+                if (choice.message != null) {
+                    return choice.message.content;
+                }
+            }
+
+        }
+        return null;
+    }
+
+    public List<EmbeddingService.EmbeddingResult> embedding(ModelEmbedding context) {
+        ModelConfig info = context.getModelInfo();
+        OkHttpDirectConnector connector = new OkHttpDirectConnector(
+                info.getUrl(), info.getApi(), info.getUserToken());
+        ModelEmbedding requestContext = new ModelEmbedding(null, context.input);
+        requestContext.setModel(context.getModel());
+        String request = new Gson().toJson(requestContext);
+        final EmbeddingResponse response = RetryCommand.run(() -> {
+            return connector.embeddingPost(request);
+        }, Constants.MODEL_CLIENT_RETRY_TIMES, Constants.MODEL_CLIENT_RETRY_INTERVAL_MS);
+        if (response == null) {
+            return new ArrayList<>();
+        }
+        List<EmbeddingService.EmbeddingResult> embeddingResults = new ArrayList<>();
+        if (response.data == null) {
+            throw new RuntimeException("Embedding model response is null");
+        }
+        for (EmbeddingResponse.EmbeddingVector v : response.data) {
+            int index = v.index;
+            if (index >= context.input.length) {
+                throw new RuntimeException("Embedding model response contains invalid index");
+            }
+            String input = context.input[index];
+            double[] vector = v.embedding;
+            EmbeddingService.EmbeddingResult result = new EmbeddingService.EmbeddingResult(input, vector);
+            embeddingResults.add(result);
+        }
+        return embeddingResults;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/Response.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/Response.java
new file mode 100644
index 000000000..b53c2759e
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/common/model/Response.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.common.model;
+
+import com.google.gson.annotations.SerializedName;
+import java.util.List;
+
+
+public class Response {
+    public String id;
+    @SerializedName("created")
+    public long createdTimestamp;
+    public String model;
+    public String object;
+    public List<Choice> choices;
+    public Usage usage;
+    @SerializedName("system_fingerprint")
+    public String systemFingerprint;
+
+    public static class Choice {
+        public String finishReason;
+        public int index;
+        public Message message;
+        public Object logprobs;
+    }
+
+    public static class Message {
+        public String role;
+        public String content;
+    }
+
+    public static class Usage {
+        @SerializedName("completion_tokens")
+        public int completionTokens;
+        @SerializedName("prompt_tokens")
+        public int promptTokens;
+        @SerializedName("total_tokens")
+        public int totalTokens;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/engine/GraphComputeEngine.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/engine/GraphComputeEngine.java
new file mode 100644
index 000000000..6942e9e0a
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/engine/GraphComputeEngine.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.engine;
+
+public interface GraphComputeEngine {
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/EmptyGraphAccessor.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/EmptyGraphAccessor.java
new file mode 100644
index 000000000..e0910d385
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/EmptyGraphAccessor.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.geaflow.ai.graph.io.GraphSchema;
+
+public class EmptyGraphAccessor implements GraphAccessor {
+
+    @Override
+    public GraphSchema getGraphSchema() {
+        return null;
+    }
+
+    @Override
+    public GraphVertex getVertex(String label, String id) {
+        return null;
+    }
+
+    @Override
+    public List<GraphEdge> getEdge(String label, String src, String dst) {
+        return null;
+    }
+
+    @Override
+    public Iterator<GraphVertex> scanVertex() {
+        return Collections.emptyIterator();
+    }
+
+    @Override
+    public Iterator<GraphEdge> scanEdge(GraphVertex vertex) {
+        return Collections.emptyIterator();
+    }
+
+    @Override
+    public List<GraphEntity> expand(GraphEntity entity) {
+        return new ArrayList<>();
+    }
+
+    @Override
+    public GraphAccessor copy() {
+        return new EmptyGraphAccessor();
+    }
+
+    @Override
+    public String getType() {
+        return EmptyGraphAccessor.class.getSimpleName();
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/Graph.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/Graph.java
new file mode 100644
index 000000000..8322bae16
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/Graph.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.geaflow.ai.graph.io.Edge;
+import org.apache.geaflow.ai.graph.io.GraphSchema;
+import org.apache.geaflow.ai.graph.io.Vertex;
+
+public interface Graph {
+
+    GraphSchema getGraphSchema();
+
+    Vertex getVertex(String label, String id);
+
+    int removeVertex(String label, String id);
+
+    int updateVertex(Vertex newVertex);
+
+    int addVertex(Vertex newVertex);
+
+    Collection<Edge> getEdge(String label, String src, String dst);
+
+    int removeEdge(Edge edge);
+
+    int addEdge(Edge newEdge);
+
+    Iterator<Edge> scanEdge(Vertex vertex);
+
+    Iterator<Vertex> scanVertex();
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphAccessor.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphAccessor.java
new file mode 100644
index 000000000..82dd1cd57
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphAccessor.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import java.util.Iterator;
+import java.util.List;
+import org.apache.geaflow.ai.graph.io.GraphSchema;
+
+public interface GraphAccessor {
+
+    GraphSchema getGraphSchema();
+
+    GraphVertex getVertex(String label, String id);
+
+    List<GraphEdge> getEdge(String label, String src, String dst);
+
+    Iterator<GraphVertex> scanVertex();
+
+    Iterator<GraphEdge> scanEdge(GraphVertex vertex);
+
+    List<GraphEntity> expand(GraphEntity entity);
+
+    GraphAccessor copy();
+
+    String getType();
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphEdge.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphEdge.java
new file mode 100644
index 000000000..0dd3d2216
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphEdge.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import java.util.Objects;
+import org.apache.geaflow.ai.graph.io.Edge;
+
+public class GraphEdge implements GraphEntity {
+
+    private final Edge edge;
+
+    public GraphEdge(Edge edge) {
+        this.edge = Objects.requireNonNull(edge);
+    }
+
+    public Edge getEdge() {
+        return edge;
+    }
+
+    @Override
+    public String getLabel() {
+        return edge.getLabel();
+    }
+
+    @Override
+    public String toString() {
+        return edge.toString();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        GraphEdge graphEdge = (GraphEdge) o;
+        return Objects.equals(edge, graphEdge.edge);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(edge);
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphEntity.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphEntity.java
new file mode 100644
index 000000000..5d63649a4
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphEntity.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+public interface GraphEntity {
+
+    String getLabel();
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphVertex.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphVertex.java
new file mode 100644
index 000000000..5e3d58889
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/GraphVertex.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import java.util.Objects;
+import org.apache.geaflow.ai.graph.io.Vertex;
+
+public class GraphVertex implements GraphEntity {
+
+    private final Vertex vertex;
+
+    public GraphVertex(Vertex vertex) {
+        this.vertex = Objects.requireNonNull(vertex);
+    }
+
+    public Vertex getVertex() {
+        return vertex;
+    }
+
+    @Override
+    public String getLabel() {
+        return vertex.getLabel();
+    }
+
+    @Override
+    public String toString() {
+        return vertex.toString();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        GraphVertex that = (GraphVertex) o;
+        return Objects.equals(vertex, that.vertex);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(vertex);
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/LocalMemoryGraphAccessor.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/LocalMemoryGraphAccessor.java
new file mode 100644
index 000000000..98614bc4a
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/LocalMemoryGraphAccessor.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.graph.io.*;
+
+public class LocalMemoryGraphAccessor implements GraphAccessor {
+
+    private final MemoryGraph graph;
+
+    public LocalMemoryGraphAccessor(ClassLoader classLoader, String resourcePath, Long limit,
+                                    Function<Vertex, Vertex> vertexMapper,
+                                    Function<Edge, Edge> edgeMapper) {
+        try {
+            this.graph = GraphFileReader.getGraph(classLoader, resourcePath, limit,
+                    vertexMapper, edgeMapper);
+        } catch (Throwable e) {
+            throw new RuntimeException("Init local graph error", e);
+        }
+    }
+
+    public LocalMemoryGraphAccessor(MemoryGraph memoryGraph) {
+        this.graph = memoryGraph;
+    }
+
+    @Override
+    public GraphSchema getGraphSchema() {
+        return graph.getGraphSchema();
+    }
+
+    @Override
+    public GraphVertex getVertex(String label, String id) {
+        Vertex innerVertex = graph.getVertex(label, id);
+        if (innerVertex == null) {
+            return null;
+        }
+        return new GraphVertex(innerVertex);
+    }
+
+    @Override
+    public List<GraphEdge> getEdge(String label, String src, String dst) {
+        List<Edge> innerEdges = graph.getEdge(label, src, dst);
+        if (innerEdges == null) {
+            return Collections.emptyList();
+        }
+        return innerEdges.stream().map(GraphEdge::new).collect(Collectors.toList());
+    }
+
+    @Override
+    public Iterator<GraphVertex> scanVertex() {
+        return new GraphVertexIterator(graph.scanVertex());
+    }
+
+    @Override
+    public Iterator<GraphEdge> scanEdge(GraphVertex vertex) {
+        return new GraphEdgeIterator(graph.scanEdge(vertex.getVertex()));
+    }
+
+    @Override
+    public List<GraphEntity> expand(GraphEntity entity) {
+        List<GraphEntity> results = new ArrayList<>();
+        if (entity instanceof GraphVertex) {
+            Iterator<Edge> iterator = graph.scanEdge(((GraphVertex) entity).getVertex());
+            while (iterator.hasNext()) {
+                results.add(new GraphEdge(iterator.next()));
+            }
+        } else if (entity instanceof GraphEdge) {
+            GraphEdge graphEdge = (GraphEdge) entity;
+            Vertex srcVertex = graph.getVertex(null, graphEdge.getEdge().getSrcId());
+            Vertex dstVertex = graph.getVertex(null, graphEdge.getEdge().getDstId());
+            if (srcVertex != null) {
+                results.add(new GraphVertex(srcVertex));
+            }
+            if (dstVertex != null) {
+                results.add(new GraphVertex(dstVertex));
+            }
+        }
+        return results;
+    }
+
+    public MemoryMutableGraph getMutableGraph() {
+        return new MemoryMutableGraph(graph);
+    }
+
+    @Override
+    public GraphAccessor copy() {
+        return this;
+    }
+
+    @Override
+    public String getType() {
+        return this.getClass().getSimpleName();
+    }
+
+
+    private static class GraphVertexIterator implements Iterator<GraphVertex> {
+
+        private final Iterator<Vertex> vertexIterator;
+
+        public GraphVertexIterator(Iterator<Vertex> vertexIterator) {
+            this.vertexIterator = vertexIterator;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return vertexIterator.hasNext();
+        }
+
+        @Override
+        public GraphVertex next() {
+            Vertex nextVertex = vertexIterator.next();
+            return new GraphVertex(nextVertex);
+        }
+    }
+
+    private static class GraphEdgeIterator implements Iterator<GraphEdge> {
+        private final Iterator<Edge> delegate;
+
+        public GraphEdgeIterator(Iterator<Edge> delegate) {
+            this.delegate = delegate;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return delegate.hasNext();
+        }
+
+        @Override
+        public GraphEdge next() {
+            Edge edge = delegate.next();
+            return new GraphEdge(edge);
+        }
+    }
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/MemoryMutableGraph.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/MemoryMutableGraph.java
new file mode 100644
index 000000000..7c9a3a613
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/MemoryMutableGraph.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import org.apache.geaflow.ai.graph.io.Edge;
+import org.apache.geaflow.ai.graph.io.MemoryGraph;
+import org.apache.geaflow.ai.graph.io.Vertex;
+
+public class MemoryMutableGraph implements MutableGraph {
+
+    private final MemoryGraph graph;
+
+    public MemoryMutableGraph(MemoryGraph graph) {
+        this.graph = graph;
+    }
+
+    @Override
+    public int removeVertex(String label, String id) {
+        return this.graph.removeVertex(label, id);
+    }
+
+    @Override
+    public int updateVertex(Vertex newVertex) {
+        return this.graph.updateVertex(newVertex);
+    }
+
+    @Override
+    public int addVertex(Vertex newVertex) {
+        return this.graph.addVertex(newVertex);
+    }
+
+    @Override
+    public int removeEdge(Edge edge) {
+        return this.graph.removeEdge(edge);
+    }
+
+    @Override
+    public int addEdge(Edge newEdge) {
+        return this.graph.addEdge(newEdge);
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/MutableGraph.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/MutableGraph.java
new file mode 100644
index 000000000..8ad84891c
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/MutableGraph.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph;
+
+import org.apache.geaflow.ai.graph.io.Edge;
+import org.apache.geaflow.ai.graph.io.Vertex;
+
+public interface MutableGraph {
+
+    int removeVertex(String label, String id);
+
+    int updateVertex(Vertex newVertex);
+
+    int addVertex(Vertex newVertex);
+
+    int removeEdge(Edge edge);
+
+    int addEdge(Edge newEdge);
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/CsvFileReader.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/CsvFileReader.java
new file mode 100644
index 000000000..28f4e8c0a
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/CsvFileReader.java
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CsvFileReader {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(CsvFileReader.class);
+
+    List<String> colSchema;
+    Map<String, List<String>> fileContent;
+    long limit;
+
+    public CsvFileReader(long limit) {
+        this.colSchema = new ArrayList<>();
+        this.fileContent = new HashMap<>();
+        this.limit = limit;
+    }
+
+    public void readCsvFile(String fileName) throws IOException {
+        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName);
+        if (inputStream == null) {
+            throw new IOException("Cannot find the file: " + fileName);
+        }
+
+        long count = 0;
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
+            String line;
+            boolean isFirstLine = true;
+
+            while ((line = reader.readLine()) != null) {
+                count++;
+                if (isFirstLine) {
+                    parseHeader(line);
+                    isFirstLine = false;
+                } else {
+                    parseDataRow(line);
+                }
+                if (count > limit) {
+                    break;
+                }
+            }
+        }
+    }
+
+    private void parseHeader(String headerLine) {
+        String[] headers = headerLine.split("\\|");
+
+        colSchema.clear();
+        fileContent.clear();
+
+        for (String header : headers) {
+            colSchema.add(header.trim());
+            fileContent.put(header.trim(), new ArrayList<>());
+        }
+    }
+
+    private void parseDataRow(String dataLine) {
+        if (dataLine == null || dataLine.trim().isEmpty()) {
+            return;
+        }
+
+        String[] values = dataLine.split("\\|");
+        if (values.length != colSchema.size()) {
+            System.err.println("WARNING: line number does not match - " + dataLine);
+            return;
+        }
+
+        for (int i = 0; i < colSchema.size(); i++) {
+            String columnName = colSchema.get(i);
+            String value = values[i].trim();
+            fileContent.get(columnName).add(value);
+        }
+    }
+
+    public List<String> getColSchema() {
+        return new ArrayList<>(colSchema);
+    }
+
+    public Map<String, List<String>> getFileContent() {
+        Map<String, List<String>> copy = new HashMap<>();
+        for (Map.Entry<String, List<String>> entry : fileContent.entrySet()) {
+            copy.put(entry.getKey(), new ArrayList<>(entry.getValue()));
+        }
+        return copy;
+    }
+
+    public List<String> getColumnData(String columnName) {
+        List<String> data = fileContent.get(columnName);
+        return data != null ? new ArrayList<>(data) : new ArrayList<>();
+    }
+
+    public int getRowCount() {
+        if (fileContent.isEmpty()) {
+            return 0;
+        }
+        return fileContent.values().iterator().next().size();
+    }
+
+    public List<String> getRow(int rowIndex) {
+        List<String> row = new ArrayList<>();
+        int rowCount = getRowCount();
+
+        if (rowIndex < 0 || rowIndex >= rowCount) {
+            throw new IndexOutOfBoundsException("Row index out of range: " + rowIndex);
+        }
+
+        for (String columnName : colSchema) {
+            List<String> columnData = fileContent.get(columnName);
+            if (columnData != null && rowIndex < columnData.size()) {
+                row.add(columnData.get(rowIndex));
+            }
+        }
+
+        return row;
+    }
+
+    public void printContent() {
+        LOGGER.info("ColName: " + colSchema);
+        LOGGER.info("Data content:");
+        for (Map.Entry<String, List<String>> entry : fileContent.entrySet()) {
+            LOGGER.info(entry.getKey() + ": " + entry.getValue());
+        }
+        LOGGER.info("Total row count: " + getRowCount());
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Edge.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Edge.java
new file mode 100644
index 000000000..fa4d98576
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Edge.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.List;
+import java.util.Objects;
+
+public class Edge {
+
+    private final String srcId;
+    private final String dstId;
+    private final String label;
+    private final List<String> values;
+
+    public Edge(String label, String srcId, String dstId, List<String> values) {
+        this.label = label;
+        this.srcId = srcId;
+        this.dstId = dstId;
+        this.values = values;
+    }
+
+    public List<String> getValues() {
+        return values;
+    }
+
+    public String getSrcId() {
+        return srcId;
+    }
+
+    public String getDstId() {
+        return dstId;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    @Override
+    public String toString() {
+        return label + " | " + srcId + " | " + dstId + " | " + String.join("|", values);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        Edge edge = (Edge) o;
+        return Objects.equals(srcId, edge.srcId) && Objects.equals(dstId, edge.dstId) && Objects.equals(label, edge.label);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(srcId, dstId, label);
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EdgeGroup.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EdgeGroup.java
new file mode 100644
index 000000000..d134d823c
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EdgeGroup.java
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.common.ErrorCode;
+
+public class EdgeGroup implements EntityGroup {
+
+    public final EdgeSchema edgeSchema;
+    private final List<Edge> edges;
+    private final Map<String, List<Integer>> index;
+    private final Map<String, List<Integer>> pointIndices;
+
+    public EdgeGroup(EdgeSchema edgeSchema, List<Edge> edges) {
+        this.edgeSchema = edgeSchema;
+        this.edges = edges;
+        this.index = new HashMap<>(edges.size());
+        this.pointIndices = new HashMap<>(10000);
+        buildIndex();
+    }
+
+    private void buildIndex() {
+        int index = 0;
+        for (Edge e : edges) {
+            String key = makeKey(e.getSrcId(), e.getDstId());
+            this.index.computeIfAbsent(key, k -> new ArrayList<>()).add(index);
+            this.pointIndices.computeIfAbsent(e.getSrcId(), k -> new ArrayList<>()).add(index);
+            this.pointIndices.computeIfAbsent(e.getDstId(), k -> new ArrayList<>()).add(index);
+            index++;
+        }
+    }
+
+    public EdgeSchema getEdgeSchema() {
+        return edgeSchema;
+    }
+
+    public List<Edge> getOutEdges() {
+        return edges;
+    }
+
+    public List<Edge> getOutEdges(String src) {
+        if (pointIndices.get(src) == null) {
+            return new ArrayList<>();
+        }
+        return pointIndices.get(src).stream().map(edges::get)
+                .filter(e -> e.getSrcId().equals(src))
+                .collect(Collectors.toList());
+    }
+
+    public List<Edge> getInEdges(String src) {
+        if (pointIndices.get(src) == null) {
+            return new ArrayList<>();
+        }
+        return pointIndices.get(src).stream().map(edges::get)
+                .filter(e -> e.getDstId().equals(src))
+                .collect(Collectors.toList());
+    }
+
+    public List<Edge> getEdge(String src, String dst) {
+        List<Integer> edgeIndices = index.get(makeKey(src, dst));
+        if (edgeIndices == null) {
+            return Collections.emptyList();
+        }
+        List<Edge> edges = new ArrayList<>(edgeIndices.size());
+        for (int i : edgeIndices) {
+            edges.add(this.edges.get(i));
+        }
+        return edges;
+    }
+
+    public int addEdge(Edge newEdge) {
+        if (newEdge == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_INSERT_FAILED;
+        }
+        this.edges.add(newEdge);
+        int index = this.edges.size() - 1;
+        String key = makeKey(newEdge.getSrcId(), newEdge.getDstId());
+        this.index.computeIfAbsent(key, k -> new ArrayList<>()).add(index);
+        this.pointIndices.computeIfAbsent(newEdge.getSrcId(), k -> new ArrayList<>()).add(index);
+        this.pointIndices.computeIfAbsent(newEdge.getDstId(), k -> new ArrayList<>()).add(index);
+        return ErrorCode.SUCCESS;
+    }
+
+    public int removeEdge(Edge edge) {
+        if (edge == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_REMOVE_FAILED;
+        }
+        String key = makeKey(edge.getSrcId(), edge.getDstId());
+        if (!index.containsKey(key)) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_REMOVE_FAILED;
+        }
+        List<Integer> indices = index.get(key);
+        List<Integer> deleteOffset = new ArrayList<>();
+        for (int offset : indices) {
+            Edge existsEdge = this.edges.get(offset);
+            boolean needDelete = existsEdge.equals(edge);
+            if (needDelete) {
+                edges.set(offset, null);
+                deleteOffset.add(offset);
+            }
+        }
+        for (int del : deleteOffset) {
+            this.index.get(key).remove(del);
+            this.pointIndices.get(edge.getSrcId()).remove(del);
+            this.pointIndices.get(edge.getDstId()).remove(del);
+        }
+        return ErrorCode.SUCCESS;
+    }
+
+    private String makeKey(String src, String dst) {
+        return src + "-" + dst;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EdgeSchema.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EdgeSchema.java
new file mode 100644
index 000000000..8e6ea0b0c
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EdgeSchema.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.List;
+
+public class EdgeSchema implements Schema {
+
+    private final String label;
+    private final List<String> fields;
+    private final String srcIdField;
+    private final String dstIdField;
+
+    public EdgeSchema(String label, String srcIdField,
+                      String dstIdField, List<String> fields) {
+        this.label = label;
+        this.fields = fields;
+        this.srcIdField = srcIdField;
+        this.dstIdField = dstIdField;
+    }
+
+    @Override
+    public List<String> getFields() {
+        return fields;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public String getSrcIdField() {
+        return srcIdField;
+    }
+
+    public String getDstIdField() {
+        return dstIdField;
+    }
+
+    @Override
+    public String getName() {
+        return label;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EntityGroup.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EntityGroup.java
new file mode 100644
index 000000000..f754de103
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/EntityGroup.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+public interface EntityGroup {
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/GraphFileReader.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/GraphFileReader.java
new file mode 100644
index 000000000..87e72327c
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/GraphFileReader.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+public class GraphFileReader {
+
+    public static MemoryGraph getGraph(ClassLoader classLoader, String path, long limit,
+                                       Function<Vertex, Vertex> vertexMapper,
+                                       Function<Edge, Edge> edgeMapper) throws IOException {
+        Map<String, List<String>> result = ResourceFileScanner.scanGraphLdbcSfFolder(classLoader, path);
+        GraphSchema graphSchema = new GraphSchema();
+        Map<String, EntityGroup> entities = new HashMap<>();
+        for (Map.Entry<String, List<String>> entry : result.entrySet()) {
+            String entityName = entry.getKey();
+            List<String> fileNames = entry.getValue();
+            for (String fileName : fileNames) {
+                CsvFileReader reader = new CsvFileReader(limit);
+                reader.readCsvFile(path + "/" + entityName + "/" + fileName);
+                List<String> colSchema = reader.getColSchema();
+                boolean isVertex = colSchema.contains("id");
+                if (isVertex) {
+                    int idIndex = colSchema.indexOf("id");
+                    if (idIndex < 0) {
+                        throw new RuntimeException("Cannot find index of the id column.");
+                    }
+                    VertexSchema vertexSchema = new VertexSchema(entityName, colSchema.get(idIndex), colSchema);
+                    List<Vertex> vertices = new ArrayList<>(reader.getRowCount());
+                    for (int i = 0; i < reader.getRowCount(); i++) {
+                        List<String> row = reader.getRow(i);
+                        Vertex newVertex = vertexMapper.apply(new Vertex(entityName, row.get(idIndex), row));
+                        vertices.add(newVertex);
+                    }
+                    VertexGroup vertexGroup = new VertexGroup(vertexSchema, vertices);
+                    entities.put(entityName, vertexGroup);
+                    graphSchema.addVertex(vertexSchema);
+                } else {
+                    boolean containTime = colSchema.contains("creationDate");
+                    int srcIdIndex = containTime ? 1 : 0;
+                    int dstIdIndex = containTime ? 2 : 1;
+                    EdgeSchema edgeSchema = new EdgeSchema(entityName, colSchema.get(srcIdIndex), colSchema.get(dstIdIndex), colSchema);
+                    List<Edge> edges = new ArrayList<>(reader.getRowCount());
+                    for (int i = 0; i < reader.getRowCount(); i++) {
+                        List<String> row = reader.getRow(i);
+                        Edge newEdge = edgeMapper.apply(new Edge(entityName, row.get(srcIdIndex), row.get(dstIdIndex), row));
+                        edges.add(newEdge);
+                    }
+                    EdgeGroup edgeGroup = new EdgeGroup(edgeSchema, edges);
+                    entities.put(entityName, edgeGroup);
+                    graphSchema.addEdge(edgeSchema);
+                }
+            }
+        }
+        return new MemoryGraph(graphSchema, entities);
+    }
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/GraphSchema.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/GraphSchema.java
new file mode 100644
index 000000000..d18117841
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/GraphSchema.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.verbalization.PromptFormatter;
+
+public class GraphSchema implements Schema {
+
+    private String graphName = Constants.PREFIX_GRAPH;
+    private final List<VertexSchema> vertexSchemaList;
+    private final List<EdgeSchema> edgeSchemaList;
+    private PromptFormatter promptFormatter;
+
+    public GraphSchema() {
+        this.vertexSchemaList = new ArrayList<>();
+        this.edgeSchemaList = new ArrayList<>();
+    }
+
+    public GraphSchema(List<VertexSchema> vertexSchemaList, List<EdgeSchema> edgeSchemaList) {
+        this.vertexSchemaList = vertexSchemaList;
+        this.edgeSchemaList = edgeSchemaList;
+    }
+
+    public void addVertex(VertexSchema vertexSchema) {
+        vertexSchemaList.add(vertexSchema);
+    }
+
+    public void addEdge(EdgeSchema edgeSchema) {
+        edgeSchemaList.add(edgeSchema);
+    }
+
+    public Schema getSchema(String label) {
+        for (VertexSchema vs : vertexSchemaList) {
+            if (label.equals(vs.getLabel())) {
+                return vs;
+            }
+        }
+        for (EdgeSchema vs : edgeSchemaList) {
+            if (label.equals(vs.getLabel())) {
+                return vs;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public List<String> getFields() {
+        return null;
+    }
+
+    public List<VertexSchema> getVertexSchemaList() {
+        return vertexSchemaList;
+    }
+
+    public List<EdgeSchema> getEdgeSchemaList() {
+        return edgeSchemaList;
+    }
+
+    public void setName(String graphName) {
+        this.graphName = graphName;
+    }
+
+    @Override
+    public String getName() {
+        return graphName;
+    }
+
+    public void setPromptFormatter(PromptFormatter promptFormatter) {
+        this.promptFormatter = promptFormatter;
+    }
+
+    public String getPrompt() {
+        return promptFormatter.prompt(this);
+    }
+
+    public String getPrompt(GraphVertex entity) {
+        if (promptFormatter == null) {
+            return entity.toString();
+        } else {
+            return promptFormatter.prompt(entity);
+        }
+    }
+
+    public String getPrompt(GraphEdge entity, GraphVertex start, GraphVertex end) {
+        if (promptFormatter == null) {
+            return entity.toString();
+        } else {
+            return promptFormatter.prompt(entity, start, end);
+        }
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/MemoryGraph.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/MemoryGraph.java
new file mode 100644
index 000000000..8b8592614
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/MemoryGraph.java
@@ -0,0 +1,191 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.*;
+import org.apache.geaflow.ai.common.ErrorCode;
+import org.apache.geaflow.ai.graph.Graph;
+
+public class MemoryGraph implements Graph {
+
+    public GraphSchema graphSchema;
+    public Map<String, EntityGroup> entities;
+
+    public MemoryGraph(GraphSchema graphSchema, Map<String, EntityGroup> entities) {
+        this.graphSchema = graphSchema;
+        this.entities = entities;
+    }
+
+    @Override
+    public GraphSchema getGraphSchema() {
+        return graphSchema;
+    }
+
+    public void setGraphSchema(GraphSchema graphSchema) {
+        this.graphSchema = graphSchema;
+    }
+
+    private EntityGroup getEntity(String entityName) {
+        return entities.get(entityName);
+    }
+
+    @Override
+    public Vertex getVertex(String label, String id) {
+        if (label == null) {
+            for (VertexSchema schema : getGraphSchema().getVertexSchemaList()) {
+                Vertex res = getVertex(schema.getLabel(), id);
+                if (res != null) {
+                    return res;
+                }
+            }
+        } else {
+            VertexGroup vg = (VertexGroup) getEntity(label);
+            return vg.getVertex(id);
+        }
+        return null;
+    }
+
+    @Override
+    public int removeVertex(String label, String id) {
+        EntityGroup vg = entities.get(label);
+        if (vg == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_EXISTS;
+        }
+        if (!(vg instanceof VertexGroup)) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_MATCH;
+        }
+        VertexGroup vertexGroup = (VertexGroup) vg;
+        return vertexGroup.removeVertex(id);
+    }
+
+    @Override
+    public int updateVertex(Vertex newVertex) {
+        String label = newVertex.getLabel();
+        EntityGroup vg = entities.get(label);
+        if (vg == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_EXISTS;
+        }
+        if (!(vg instanceof VertexGroup)) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_MATCH;
+        }
+        VertexGroup vertexGroup = (VertexGroup) vg;
+        return vertexGroup.updateVertex(newVertex);
+    }
+
+    @Override
+    public int addVertex(Vertex newVertex) {
+        String label = newVertex.getLabel();
+        EntityGroup vg = entities.get(label);
+        if (vg == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_EXISTS;
+        }
+        if (!(vg instanceof VertexGroup)) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_MATCH;
+        }
+        VertexGroup vertexGroup = (VertexGroup) vg;
+        return vertexGroup.addVertex(newVertex);
+    }
+
+    @Override
+    public List<Edge> getEdge(String label, String src, String dst) {
+        EdgeGroup eg = (EdgeGroup) getEntity(label);
+        return eg.getEdge(src, dst);
+    }
+
+    @Override
+    public int removeEdge(Edge edge) {
+        String label = edge.getLabel();
+        EntityGroup vg = entities.get(label);
+        if (vg == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_EXISTS;
+        }
+        if (!(vg instanceof EdgeGroup)) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_MATCH;
+        }
+        EdgeGroup edgeGroup = (EdgeGroup) vg;
+        return edgeGroup.removeEdge(edge);
+    }
+
+    @Override
+    public int addEdge(Edge newEdge) {
+        String label = newEdge.getLabel();
+        EntityGroup vg = entities.get(label);
+        if (vg == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_EXISTS;
+        }
+        if (!(vg instanceof EdgeGroup)) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_NOT_MATCH;
+        }
+        EdgeGroup edgeGroup = (EdgeGroup) vg;
+        return edgeGroup.addEdge(newEdge);
+    }
+
+    @Override
+    public Iterator<Edge> scanEdge(Vertex vertex) {
+        List<Iterator<Edge>> iterators = new ArrayList<>();
+        for (EntityGroup entityGroup : this.entities.values()) {
+            if (entityGroup instanceof EdgeGroup) {
+                iterators.add(((EdgeGroup) entityGroup).getOutEdges(vertex.getId()).iterator());
+                iterators.add(((EdgeGroup) entityGroup).getInEdges(vertex.getId()).iterator());
+            }
+        }
+        return new CompositeIterator<>(iterators);
+    }
+
+    @Override
+    public Iterator<Vertex> scanVertex() {
+        List<Iterator<Vertex>> iterators = new ArrayList<>();
+        for (EntityGroup entityGroup : this.entities.values()) {
+            if (entityGroup instanceof VertexGroup) {
+                iterators.add(((VertexGroup) entityGroup).getVertices().iterator());
+            }
+        }
+        return new CompositeIterator<>(iterators);
+    }
+
+    static class CompositeIterator<T> implements Iterator<T> {
+
+        private final List<Iterator<T>> iterators;
+        private int currentIndex = 0;
+
+        public CompositeIterator(List<Iterator<T>> iterators) {
+            this.iterators = iterators;
+        }
+
+        @Override
+        public boolean hasNext() {
+            while (currentIndex < iterators.size()) {
+                if (iterators.get(currentIndex).hasNext()) {
+                    return true;
+                }
+                currentIndex++;
+            }
+            return false;
+        }
+
+        @Override
+        public T next() {
+            if (!hasNext()) {
+                throw new NoSuchElementException();
+            }
+            return iterators.get(currentIndex).next();
+        }
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/ResourceFileScanner.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/ResourceFileScanner.java
new file mode 100644
index 000000000..050483e53
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/ResourceFileScanner.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class ResourceFileScanner {
+
+    public static Map<String, List<String>> scanGraphLdbcSfFolder(ClassLoader classLoader,
+                                                                  String path) {
+        Map<String, List<String>> resultMap = new HashMap<>();
+
+        try {
+            Path resourcePath = Paths.get(classLoader.getResource(path).toURI());
+
+            Files.list(resourcePath)
+                    .filter(Files::isDirectory)
+                    .forEach(dirPath -> {
+                        String folderName = dirPath.getFileName().toString();
+                        try {
+                            List<String> fileNames = Files.list(dirPath)
+                                    .filter(Files::isRegularFile)
+                                    .map(filePath -> filePath.getFileName().toString())
+                                    .collect(Collectors.toList());
+
+                            resultMap.put(folderName, fileNames);
+                        } catch (IOException e) {
+                            System.err.println("Fail to read: " + dirPath.toString());
+                            e.printStackTrace();
+                        }
+                    });
+
+        } catch (IOException | URISyntaxException e) {
+            System.err.println("Fail to scan resource files.");
+            e.printStackTrace();
+        }
+
+        return resultMap;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Schema.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Schema.java
new file mode 100644
index 000000000..711cf04c3
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Schema.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.List;
+
+public interface Schema {
+
+    String getName();
+
+    List<String> getFields();
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Vertex.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Vertex.java
new file mode 100644
index 000000000..72b320c0d
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/Vertex.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.List;
+import java.util.Objects;
+
+public class Vertex {
+
+    private final String id;
+    private final String label;
+    private final List<String> values;
+
+    public Vertex(String label, String id, List<String> values) {
+        this.label = label;
+        this.id = id;
+        this.values = values;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public List<String> getValues() {
+        return values;
+    }
+
+    @Override
+    public String toString() {
+        return label + " | " + id + " | " + String.join("|", values);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        Vertex vertex = (Vertex) o;
+        return Objects.equals(id, vertex.id) && Objects.equals(label, vertex.label);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(id, label);
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/VertexGroup.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/VertexGroup.java
new file mode 100644
index 000000000..fa274417d
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/VertexGroup.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.common.ErrorCode;
+
+public class VertexGroup implements EntityGroup {
+
+    public final VertexSchema vertexSchema;
+    private final List<Vertex> vertices;
+    private final Map<String, Integer> index;
+
+    public VertexGroup(VertexSchema vertexSchema, List<Vertex> vertices) {
+        this.vertexSchema = vertexSchema;
+        this.vertices = vertices;
+        this.index = new HashMap<>(vertices.size());
+        buildIndex();
+    }
+
+    private void buildIndex() {
+        int index = 0;
+        for (Vertex v : vertices) {
+            this.index.put(v.getId(), index);
+            index++;
+        }
+    }
+
+    public int addVertex(Vertex newVertex) {
+        if (newVertex == null || newVertex.getId() == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_INSERT_FAILED;
+        }
+        if (index.containsKey(newVertex.getId())) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_INSERT_FAILED;
+        }
+        this.vertices.add(newVertex);
+        this.index.put(newVertex.getId(), vertices.size() - 1);
+        return ErrorCode.SUCCESS;
+    }
+
+    public int updateVertex(Vertex newVertex) {
+        if (newVertex == null || newVertex.getId() == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_UPDATE_FAILED;
+        }
+        if (!index.containsKey(newVertex.getId())) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_UPDATE_FAILED;
+        }
+        int offset = index.get(newVertex.getId());
+        this.vertices.set(offset, newVertex);
+        return ErrorCode.SUCCESS;
+    }
+
+    public int removeVertex(String id) {
+        if (id == null) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_REMOVE_FAILED;
+        }
+        if (!index.containsKey(id)) {
+            return ErrorCode.GRAPH_ENTITY_GROUP_REMOVE_FAILED;
+        }
+        int offset = index.get(id);
+        vertices.set(offset, null);
+        index.remove(id);
+        return ErrorCode.SUCCESS;
+    }
+
+    public VertexSchema getVertexSchema() {
+        return vertexSchema;
+    }
+
+    public List<Vertex> getVertices() {
+        List<Vertex> vertices = this.vertices.stream()
+            .filter(Objects::nonNull).collect(Collectors.toList());
+        return vertices;
+    }
+
+    public Vertex getVertex(String id) {
+        if (index.get(id) != null) {
+            return vertices.get(index.get(id));
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/VertexSchema.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/VertexSchema.java
new file mode 100644
index 000000000..633e37490
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/graph/io/VertexSchema.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.graph.io;
+
+import java.util.List;
+
+public class VertexSchema implements Schema {
+
+    private final String label;
+    private final List<String> fields;
+    private final String idField;
+
+    public VertexSchema(String label, String idField, List<String> fields) {
+        this.idField = idField;
+        this.fields = fields;
+        this.label = label;
+    }
+
+    @Override
+    public List<String> getFields() {
+        return fields;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public String getIdField() {
+        return idField;
+    }
+
+    @Override
+    public String getName() {
+        return label;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/EmbeddingIndexStore.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/EmbeddingIndexStore.java
new file mode 100644
index 000000000..8fae2e1f0
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/EmbeddingIndexStore.java
@@ -0,0 +1,257 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index;
+
+import com.google.gson.Gson;
+import java.io.*;
+import java.nio.charset.Charset;
+import java.util.*;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.apache.geaflow.ai.common.model.EmbeddingService;
+import org.apache.geaflow.ai.common.model.ModelConfig;
+import org.apache.geaflow.ai.common.model.ModelUtils;
+import org.apache.geaflow.ai.graph.GraphAccessor;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.index.vector.EmbeddingVector;
+import org.apache.geaflow.ai.index.vector.IVector;
+import org.apache.geaflow.ai.verbalization.VerbalizationFunction;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EmbeddingIndexStore implements IndexStore {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(EmbeddingIndexStore.class);
+
+    private GraphAccessor graphAccessor;
+    private VerbalizationFunction verbFunc;
+    private String indexFilePath;
+    private ModelConfig modelConfig;
+    private Map<GraphEntity, List<EmbeddingService.EmbeddingResult>> indexStoreMap;
+
+    public void initStore(GraphAccessor graphAccessor, VerbalizationFunction func,
+                          String indexFilePath, ModelConfig modelInfo) {
+        this.graphAccessor = graphAccessor;
+        this.verbFunc = func;
+        this.indexFilePath = indexFilePath;
+        this.modelConfig = modelInfo;
+        this.indexStoreMap = new HashMap<>();
+
+        //Read index items from indexFilePath
+        Map<String, GraphEntity> key2EntityMap = new HashMap<>();
+        for (Iterator<GraphVertex> itV = this.graphAccessor.scanVertex(); itV.hasNext(); ) {
+            GraphVertex vertex = itV.next();
+            key2EntityMap.put(ModelUtils.getGraphEntityKey(vertex), vertex);
+            for (Iterator<GraphEdge> itE = this.graphAccessor.scanEdge(vertex); itE.hasNext(); ) {
+                GraphEdge edge = itE.next();
+                key2EntityMap.put(ModelUtils.getGraphEntityKey(edge), edge);
+            }
+        }
+        LOGGER.info("Success to scan entities. total entities num: " + key2EntityMap.size());
+
+        try {
+            File indexFile = new File(this.indexFilePath);
+
+            if (!indexFile.exists()) {
+                File parentDir = indexFile.getParentFile();
+                if (parentDir != null && !parentDir.exists()) {
+                    parentDir.mkdirs();
+                }
+                indexFile.createNewFile();
+                LOGGER.info("Success to create new index store file. Path: " + this.indexFilePath);
+            }
+        } catch (Throwable e) {
+            throw new RuntimeException(e);
+        }
+
+
+        long count = 0;
+        try (BufferedReader reader = new BufferedReader(
+                new InputStreamReader(
+                        new FileInputStream(this.indexFilePath),
+                        Charset.defaultCharset()))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                line = line.trim();
+                if (line.isEmpty()) {
+                    continue;
+                }
+                try {
+                    EmbeddingService.EmbeddingResult embedding =
+                            new Gson().fromJson(line, EmbeddingService.EmbeddingResult.class);
+                    String key = embedding.input;
+                    GraphEntity entity = key2EntityMap.get(key);
+                    if (entity != null) {
+                        this.indexStoreMap.computeIfAbsent(entity, k -> new ArrayList<>()).add(embedding);
+                    }
+                    count++;
+                } catch (Throwable e) {
+                    LOGGER.info("Cannot parse embedding item: " + line);
+                }
+            }
+        } catch (Throwable e) {
+            throw new RuntimeException(e);
+        }
+
+        LOGGER.info("Success to read index store file. items num: " + count);
+        LOGGER.info("Success to rebuild index with file. index num: " + this.indexStoreMap.size());
+
+
+        //Scan entities in the graph, make new index items
+        EmbeddingService embeddingService = new EmbeddingService();
+        embeddingService.setModelConfig(modelInfo);
+
+        final int BATCH_SIZE = Constants.EMBEDDING_INDEX_STORE_BATCH_SIZE;
+        List<GraphEntity> pendingEntities = new ArrayList<>(BATCH_SIZE);
+        Set<GraphEntity> batchEntitiesBuffer = new HashSet<>(BATCH_SIZE);
+        List<String> result = new ArrayList<>();
+        final int REPORT_SIZE = Constants.EMBEDDING_INDEX_STORE_REPORT_SIZE;
+        long reportedCount = this.indexStoreMap.size();
+        long addedCount = this.indexStoreMap.size();
+        for (Iterator<GraphVertex> itV = graphAccessor.scanVertex(); itV.hasNext(); ) {
+            GraphVertex vertex = itV.next();
+
+            // Scan vertices or edges, skip already indexed data,
+            // add un-indexed data to batch processing collection
+            if (!indexStoreMap.containsKey(vertex) && !batchEntitiesBuffer.contains(vertex)) {
+                batchEntitiesBuffer.add(vertex);
+                pendingEntities.add(vertex);
+                if (pendingEntities.size() >= BATCH_SIZE) {
+                    result.addAll(indexBatch(embeddingService, pendingEntities));
+                    flushBatchIndex(result, false);
+                    pendingEntities.clear();
+                    batchEntitiesBuffer.clear();
+                    addedCount += BATCH_SIZE;
+                }
+            }
+
+            for (Iterator<GraphEdge> itE = graphAccessor.scanEdge(vertex); itE.hasNext(); ) {
+                GraphEdge edge = itE.next();
+                if (!indexStoreMap.containsKey(edge) && !batchEntitiesBuffer.contains(edge)) {
+                    batchEntitiesBuffer.add(edge);
+                    pendingEntities.add(edge);
+                    if (pendingEntities.size() >= BATCH_SIZE) {
+                        result.addAll(indexBatch(embeddingService, pendingEntities));
+                        flushBatchIndex(result, false);
+                        pendingEntities.clear();
+                        batchEntitiesBuffer.clear();
+                        addedCount += BATCH_SIZE;
+                    }
+                }
+            }
+            if (addedCount - reportedCount > REPORT_SIZE) {
+                LOGGER.info("added batch index. added num: " + addedCount);
+                reportedCount = addedCount;
+            }
+        }
+        if (pendingEntities.size() > 0) {
+            result.addAll(indexBatch(embeddingService, pendingEntities));
+            flushBatchIndex(result, true);
+            addedCount += pendingEntities.size();
+            pendingEntities.clear();
+            batchEntitiesBuffer.clear();
+        }
+
+        LOGGER.info("Successfully added {} new index items. Total indexed: {}",
+                addedCount, indexStoreMap.size());
+    }
+
+    private List<String> indexBatch(EmbeddingService service, List<GraphEntity> pendingEntities) {
+        if (pendingEntities == null || service == null || pendingEntities.isEmpty()) {
+            return new ArrayList<>();
+        }
+        List<String> pendingTexts = new ArrayList<>(pendingEntities.size());
+        Map<GraphEntity, Pair<Integer, Integer>> entity2StartEndPair = new HashMap<>();
+        for (GraphEntity e : pendingEntities) {
+            Integer start = pendingTexts.size();
+            pendingTexts.addAll(ModelUtils.splitLongText(
+                Constants.EMBEDDING_INDEX_STORE_SPLIT_TEXT_CHUNK_SIZE,
+                    verbFunc.verbalize(e).toArray(new String[0])));
+            Integer end = pendingTexts.size();
+            entity2StartEndPair.put(e, Pair.of(start, end));
+        }
+
+        Gson gson = new Gson();
+        int batchSize = pendingEntities.size();
+        List<String> result = new ArrayList<>();
+        List<String> pendingTextsList = new ArrayList<>(pendingTexts);
+
+        for (int i = 0; i < pendingTextsList.size(); i += batchSize) {
+            int end = Math.min(i + batchSize, pendingTextsList.size());
+            List<String> batch = pendingTextsList.subList(i, end);
+            String[] textsArray = batch.toArray(new String[0]);
+            String embeddingResultStr = service.embedding(textsArray);
+            List<String> splitResults = Arrays.asList(embeddingResultStr.trim().split("\n"));
+            result.addAll(splitResults);
+
+        }
+
+        List<String> formatResult = new ArrayList<>();
+        for (Map.Entry<GraphEntity, Pair<Integer, Integer>> entry : entity2StartEndPair.entrySet()) {
+            GraphEntity e = entry.getKey();
+            List<EmbeddingService.EmbeddingResult> embeddings = new ArrayList<>();
+            for (int i = entry.getValue().getLeft(); i < entry.getValue().getRight(); i++) {
+                if (StringUtils.isNotBlank(result.get(i))) {
+                    EmbeddingService.EmbeddingResult res = gson.fromJson(result.get(i),
+                        EmbeddingService.EmbeddingResult.class);
+                    res.input = ModelUtils.getGraphEntityKey(e);
+                    formatResult.add(gson.toJson(res));
+                    embeddings.add(res);
+                }
+            }
+            indexStoreMap.put(e, embeddings);
+        }
+        return formatResult;
+    }
+
+    private void flushBatchIndex(List<String> newItemStrings, boolean force) {
+        final int WRITE_SIZE = Constants.EMBEDDING_INDEX_STORE_FLUSH_WRITE_SIZE;
+        if (force || newItemStrings.size() >= WRITE_SIZE) {
+            try (FileWriter fw = new FileWriter(this.indexFilePath, true);
+                 BufferedWriter writer = new BufferedWriter(fw);
+                 PrintWriter out = new PrintWriter(writer)) {
+                for (String item : newItemStrings) {
+                    out.println(item);
+                }
+                LOGGER.info("Success to append " + newItemStrings.size() + " new index items to file.");
+            } catch (IOException e) {
+                throw new RuntimeException("Failed to append to index file: " + this.indexFilePath, e);
+            }
+            newItemStrings.clear();
+        }
+    }
+
+    @Override
+    public List<IVector> getEntityIndex(GraphEntity entity) {
+        if (entity != null && indexStoreMap.get(entity) != null) {
+            List<EmbeddingService.EmbeddingResult> resultList = indexStoreMap.get(entity);
+            List<IVector> result = new ArrayList<>();
+            for (EmbeddingService.EmbeddingResult res : resultList) {
+                double[] embedding = res.embedding;
+                result.add(new EmbeddingVector(embedding));
+            }
+            return result;
+        }
+        return Collections.emptyList();
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/EntityAttributeIndexStore.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/EntityAttributeIndexStore.java
new file mode 100644
index 000000000..aa9823876
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/EntityAttributeIndexStore.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.index.vector.IVector;
+import org.apache.geaflow.ai.index.vector.KeywordVector;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+import org.apache.geaflow.ai.verbalization.VerbalizationFunction;
+
+public class EntityAttributeIndexStore implements IndexStore {
+
+    private VerbalizationFunction verbFunc;
+
+    public void initStore(VerbalizationFunction func) {
+        if (func != null) {
+            this.verbFunc = func;
+        }
+    }
+
+    @Override
+    public List<IVector> getEntityIndex(GraphEntity entity) {
+        if (entity instanceof GraphVertex) {
+            String verbalization = verbFunc.verbalize(new SubGraph().addVertex((GraphVertex) entity));
+            List<String> sentences = new ArrayList<>();
+            sentences.add(verbalization);
+            KeywordVector keywordVector = new KeywordVector(sentences.toArray(new String[0]));
+            List<IVector> results = new ArrayList<>();
+            results.add(keywordVector);
+            return results;
+        } else {
+            String verbalization = verbFunc.verbalize(new SubGraph().addEdge((GraphEdge) entity));
+            List<String> sentences = new ArrayList<>();
+            sentences.add(verbalization);
+            KeywordVector keywordVector = new KeywordVector(sentences.toArray(new String[0]));
+            List<IVector> results = new ArrayList<>();
+            results.add(keywordVector);
+            return results;
+        }
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/IndexStore.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/IndexStore.java
new file mode 100644
index 000000000..53d1d8e51
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/IndexStore.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index;
+
+import java.util.List;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.index.vector.IVector;
+
+public interface IndexStore {
+
+    List<IVector> getEntityIndex(GraphEntity entity);
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/IndexStoreCache.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/IndexStoreCache.java
new file mode 100644
index 000000000..6401b366b
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/IndexStoreCache.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.index.vector.IVector;
+
+public class IndexStoreCache {
+
+    public static final IndexStoreCache CACHE = new IndexStoreCache();
+    public static final List<IndexStore> STORE = new ArrayList<>();
+
+    static {
+        STORE.add(new EntityAttributeIndexStore());
+    }
+
+    public List<IVector> getVertexIndex(GraphVertex graphVertex) {
+        List<IVector> results = new ArrayList<>();
+        for (IndexStore indexStore : STORE) {
+            results.addAll(indexStore.getEntityIndex(graphVertex));
+        }
+        return results;
+    }
+
+    public List<IVector> getEdgeIndex(GraphEdge graphEdge) {
+        List<IVector> results = new ArrayList<>();
+        for (IndexStore indexStore : STORE) {
+            results.addAll(indexStore.getEntityIndex(graphEdge));
+        }
+        return results;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/EmbeddingVector.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/EmbeddingVector.java
new file mode 100644
index 000000000..61cd80ee6
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/EmbeddingVector.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index.vector;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+public class EmbeddingVector implements IVector {
+
+
+    private final double[] vec;
+
+    public EmbeddingVector(double[] vec) {
+        this.vec = Objects.requireNonNull(vec);
+    }
+
+    @Override
+    public double match(IVector other) {
+        // Type check: must be same implementation class
+        if (!(other instanceof EmbeddingVector)) {
+            return 0.0;
+        }
+        EmbeddingVector otherVec = (EmbeddingVector) other;
+
+        // Dimension check: vectors must have same length
+        if (this.vec.length != otherVec.vec.length) {
+            return 0.0;
+        }
+
+        double dotProduct = 0.0;  // Accumulator for dot product
+        double normSquared1 = 0.0; // Accumulator for squared L2 norm of this vector
+        double normSquared2 = 0.0; // Accumulator for squared L2 norm of other vector
+
+        // Single-pass computation for dot product and squared norms
+        for (int i = 0; i < this.vec.length; i++) {
+            dotProduct += this.vec[i] * otherVec.vec[i];
+            normSquared1 += this.vec[i] * this.vec[i];
+            normSquared2 += otherVec.vec[i] * otherVec.vec[i];
+        }
+
+        // Calculate denominator (product of L2 norms)
+        double denominator = Math.sqrt(normSquared1) * Math.sqrt(normSquared2);
+
+        // Handle zero-vector case (avoid division by zero)
+        if (denominator == 0.0) {
+            return 0.0;
+        }
+
+        // Return cosine similarity: dot product divided by norms product
+        return dotProduct / denominator;
+    }
+
+    @Override
+    public VectorType getType() {
+        return VectorType.EmbeddingVector;
+    }
+
+
+    @Override
+    public String toString() {
+        return "EmbeddingVector{"
+                + "vec=" + Arrays.toString(vec)
+                + '}';
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/IVector.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/IVector.java
new file mode 100644
index 000000000..14bfdb1c1
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/IVector.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index.vector;
+
+public interface IVector {
+
+    double match(IVector other);
+
+    VectorType getType();
+
+    String toString();
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/KeywordVector.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/KeywordVector.java
new file mode 100644
index 000000000..da92341b4
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/KeywordVector.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index.vector;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+public class KeywordVector implements IVector {
+
+    private final String[] vec;
+
+    public KeywordVector(String... vec) {
+        this.vec = vec;
+    }
+
+    public String[] getVec() {
+        return vec;
+    }
+
+    @Override
+    public double match(IVector other) {
+        if (!(other instanceof KeywordVector)) {
+            return 0.0;
+        }
+        KeywordVector otherKeyword = (KeywordVector) other;
+        String[] small = this.vec.length <= otherKeyword.vec.length ? this.vec : otherKeyword.vec;
+        String[] large = this.vec.length <= otherKeyword.vec.length ? otherKeyword.vec : this.vec;
+        Map<String, Long> keyword2TimesMap = new HashMap<>();
+        for (String word : small) {
+            keyword2TimesMap.put(word, keyword2TimesMap.getOrDefault(word, 0L) + 1);
+        }
+        int count = 0;
+        for (String keyword : large) {
+            if (keyword2TimesMap.containsKey(keyword)) {
+                count += keyword2TimesMap.get(keyword);
+            }
+        }
+        return count;
+    }
+
+    @Override
+    public VectorType getType() {
+        return VectorType.KeywordVector;
+    }
+
+    @Override
+    public String toString() {
+        return "KeywordVector{"
+                + "vec=" + Arrays.toString(vec)
+                + '}';
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/MagnitudeVector.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/MagnitudeVector.java
new file mode 100644
index 000000000..dfe6696dd
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/MagnitudeVector.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index.vector;
+
+public class MagnitudeVector implements IVector {
+
+    @Override
+    public double match(IVector other) {
+        return 0;
+    }
+
+    @Override
+    public VectorType getType() {
+        return VectorType.MagnitudeVector;
+    }
+
+    @Override
+    public String toString() {
+        return "MagnitudeVector{}";
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/TraversalVector.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/TraversalVector.java
new file mode 100644
index 000000000..86ef1ce4c
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/TraversalVector.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index.vector;
+
+public class TraversalVector implements IVector {
+
+    private final String[] vec;
+
+    public TraversalVector(String... vec) {
+        if (vec.length % 3 != 0) {
+            throw new RuntimeException("Traversal vector should be src-edge-dst triple");
+        }
+        this.vec = vec;
+    }
+
+    @Override
+    public double match(IVector other) {
+        return 0;
+    }
+
+    @Override
+    public VectorType getType() {
+        return VectorType.TraversalVector;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder("TraversalVector{vec=");
+        for (int i = 0; i < vec.length; i++) {
+            if (i > 0) {
+                sb.append(i % 3 == 0 ? "; " : "-");
+            }
+            sb.append(vec[i]);
+            if (i % 3 == 2) {
+                sb.append(">");
+            }
+        }
+        return sb.append('}').toString();
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/VectorType.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/VectorType.java
new file mode 100644
index 000000000..1f076c8e7
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/index/vector/VectorType.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.index.vector;
+
+public enum VectorType {
+    TraversalVector,
+    EmbeddingVector,
+    MagnitudeVector,
+    KeywordVector
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/EmbeddingOperator.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/EmbeddingOperator.java
new file mode 100644
index 000000000..849f53ee4
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/EmbeddingOperator.java
@@ -0,0 +1,194 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.operator;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.apache.geaflow.ai.graph.GraphAccessor;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.index.IndexStore;
+import org.apache.geaflow.ai.index.vector.EmbeddingVector;
+import org.apache.geaflow.ai.index.vector.IVector;
+import org.apache.geaflow.ai.index.vector.VectorType;
+import org.apache.geaflow.ai.search.VectorSearch;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+
+public class EmbeddingOperator implements SearchOperator {
+
+    private final GraphAccessor graphAccessor;
+    private final IndexStore indexStore;
+    private double threshold;
+    private int topN;
+
+    public EmbeddingOperator(GraphAccessor accessor, IndexStore store) {
+        this.graphAccessor = Objects.requireNonNull(accessor);
+        this.indexStore = Objects.requireNonNull(store);
+        this.threshold = Constants.EMBEDDING_OPERATE_DEFAULT_THRESHOLD;
+        this.topN = Constants.EMBEDDING_OPERATE_DEFAULT_TOPN;
+    }
+
+    @Override
+    public List<SubGraph> apply(List<SubGraph> subGraphList, VectorSearch search) {
+        List<IVector> queryEmbeddingVectors = search.getVectorMap().get(VectorType.EmbeddingVector);
+        if (queryEmbeddingVectors == null || queryEmbeddingVectors.isEmpty()) {
+            if (subGraphList == null) {
+                return new ArrayList<>();
+            }
+            return new ArrayList<>(subGraphList);
+        }
+        List<GraphEntity> globalResults = searchWithGlobalGraph(queryEmbeddingVectors);
+        if (subGraphList == null || subGraphList.isEmpty()) {
+            List<GraphVertex> startVertices = new ArrayList<>();
+            for (GraphEntity resEntity : globalResults) {
+                if (resEntity instanceof GraphVertex) {
+                    startVertices.add((GraphVertex) resEntity);
+                }
+            }
+            //Apply to subgraph
+            return startVertices.stream().map(v -> {
+                SubGraph subGraph = new SubGraph();
+                subGraph.addVertex(v);
+                return subGraph;
+            }).collect(Collectors.toList());
+        } else {
+            Map<GraphEntity, List<IVector>> extendEntityIndexMap = new HashMap<>();
+            //Traverse all extension points of the subgraph and search within the extension area
+            for (SubGraph subGraph : subGraphList) {
+                List<GraphEntity> extendEntities = getSubgraphExpand(subGraph);
+                for (GraphEntity extendEntity : extendEntities) {
+                    List<IVector> entityIndex = indexStore.getEntityIndex(extendEntity);
+                    extendEntityIndexMap.put(extendEntity, entityIndex);
+                }
+            }
+            //recall compute
+            List<GraphEntity> matchEntities = searchEmbeddings(queryEmbeddingVectors, extendEntityIndexMap);
+            Set<GraphEntity> matchEntitiesSet = new HashSet<>(matchEntities);
+
+            //Apply to subgraph
+            List<SubGraph> subGraphs = new ArrayList<>(subGraphList);
+            for (SubGraph subGraph : subGraphs) {
+                Set<GraphEntity> subgraphEntitySet = new HashSet<>(subGraph.getGraphEntityList());
+                List<GraphEntity> extendEntities = getSubgraphExpand(subGraph);
+                for (GraphEntity extendEntity : extendEntities) {
+                    if (matchEntitiesSet.contains(extendEntity)
+                            && !subgraphEntitySet.contains(extendEntity)) {
+                        subgraphEntitySet.add(extendEntity);
+                        subGraph.addEntity(extendEntity);
+                    }
+                }
+            }
+            return subGraphs;
+        }
+    }
+
+    private List<GraphEntity> getSubgraphExpand(SubGraph subGraph) {
+        List<GraphEntity> entityList = subGraph.getGraphEntityList();
+        List<GraphEntity> expandEntities = new ArrayList<>();
+        for (GraphEntity entity : entityList) {
+            List<GraphEntity> entityExpand = graphAccessor.expand(entity);
+            expandEntities.addAll(entityExpand);
+        }
+        return expandEntities;
+    }
+
+    private List<GraphEntity> searchWithGlobalGraph(List<IVector> queryEmbeddingVectors) {
+        Map<GraphEntity, List<IVector>> entityIndexMap = new HashMap<>();
+        Iterator<GraphVertex> vertexIterator = graphAccessor.scanVertex();
+        while (vertexIterator.hasNext()) {
+            GraphVertex vertex = vertexIterator.next();
+            //Read all vertices indices from the index and add them to the candidate set.
+            List<IVector> vertexIndex = indexStore.getEntityIndex(vertex);
+            entityIndexMap.put(vertex, vertexIndex);
+        }
+        //recall compute
+        return searchEmbeddings(queryEmbeddingVectors, entityIndexMap);
+    }
+
+    private List<GraphEntity> searchEmbeddings(List<IVector> queryEmbeddingVectors,
+                                               Map<GraphEntity, List<IVector>> entityIndexMap) {
+        // Extract valid query EmbeddingVectors from input
+        List<EmbeddingVector> queryVectors = queryEmbeddingVectors.stream()
+                .filter(EmbeddingVector.class::isInstance)
+                .map(EmbeddingVector.class::cast)
+                .collect(Collectors.toList());
+
+        // Create min-heap to maintain top N entities by maximum relevance score
+        PriorityQueue<GraphEntityScorePair> minHeap = new PriorityQueue<>(Comparator.comparingDouble(a -> a.score));
+
+        // Process each entity in the index
+        for (Map.Entry<GraphEntity, List<IVector>> entry : entityIndexMap.entrySet()) {
+            GraphEntity entity = entry.getKey();
+            // Extract valid entity embeddings
+            List<EmbeddingVector> entityVectors = entry.getValue().stream()
+                    .filter(EmbeddingVector.class::isInstance)
+                    .map(EmbeddingVector.class::cast)
+                    .collect(Collectors.toList());
+
+            // Skip entities without valid embeddings
+            if (entityVectors.isEmpty()) {
+                continue;
+            }
+
+            // Compute maximum relevance score between query and entity embeddings
+            double maxRelevance = 0.0;
+            for (EmbeddingVector queryVector : queryVectors) {
+                for (EmbeddingVector entityVector : entityVectors) {
+                    double matchScore = queryVector.match(entityVector);
+                    if (matchScore > maxRelevance) {
+                        maxRelevance = matchScore;
+                    }
+                }
+            }
+
+            // Add to candidates if above threshold
+            if (maxRelevance > threshold) {
+                // Maintain heap size <= topN
+                if (minHeap.size() < topN) {
+                    minHeap.offer(new GraphEntityScorePair(entity, maxRelevance));
+                } else {
+                    assert minHeap.peek() != null;
+                    if (minHeap.peek().score < maxRelevance) {
+                        minHeap.poll();
+                        minHeap.offer(new GraphEntityScorePair(entity, maxRelevance));
+                    }
+                }
+            }
+        }
+
+        // Convert heap to sorted list (descending by score)
+        return minHeap.stream()
+                .sorted(Comparator.comparingDouble((GraphEntityScorePair p) -> p.score).reversed())
+                .map(pair -> pair.entity)
+                .collect(Collectors.toList());
+    }
+
+    // Helper class to store entity-score pairs
+    private static class GraphEntityScorePair {
+        final GraphEntity entity;
+        final double score;
+
+        GraphEntityScorePair(GraphEntity entity, double score) {
+            this.entity = entity;
+            this.score = score;
+        }
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/GraphSearchStore.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/GraphSearchStore.java
new file mode 100644
index 000000000..34cf7440b
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/GraphSearchStore.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.operator;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.graph.GraphAccessor;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.graph.io.Edge;
+import org.apache.geaflow.ai.graph.io.EdgeSchema;
+import org.apache.geaflow.ai.graph.io.Vertex;
+import org.apache.geaflow.ai.graph.io.VertexSchema;
+import org.apache.geaflow.ai.index.vector.IVector;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.search.ScoreDoc;
+import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.store.Directory;
+
+public class GraphSearchStore {
+
+    private SearchStore store;
+    private long entityNum = 0L;
+
+    public GraphSearchStore() {
+        this.store = new SearchStore();
+    }
+
+    public boolean indexVertex(GraphVertex graphVertex, List<IVector> indexVectors) {
+        Map<String, String> kv = new HashMap<>();
+        Vertex vertex = graphVertex.getVertex();
+        kv.put(SearchConstants.ID, vertex.getId());
+        kv.put(SearchConstants.LABEL, vertex.getLabel());
+        List<String> contents = new ArrayList<>(indexVectors.size());
+        for (IVector v : indexVectors) {
+            contents.add(v.toString());
+        }
+        String content = String.join(SearchConstants.DELIMITER, contents);
+        kv.put(SearchConstants.CONTENT, content);
+
+        try {
+            store.addDoc(kv);
+        } catch (Throwable e) {
+            throw new RuntimeException("Cannot index vertex to search store", e);
+        }
+        addItem();
+        return true;
+    }
+
+    public boolean indexEdge(GraphEdge graphEdge, List<IVector> indexVectors) {
+        Map<String, String> kv = new HashMap<>();
+        Edge edge = graphEdge.getEdge();
+        kv.put(SearchConstants.SRC, edge.getSrcId());
+        kv.put(SearchConstants.DST, edge.getDstId());
+        kv.put(SearchConstants.LABEL, edge.getLabel());
+        List<String> contents = new ArrayList<>(indexVectors.size());
+        for (IVector v : indexVectors) {
+            contents.add(v.toString());
+        }
+        String content = String.join(SearchConstants.DELIMITER, contents);
+        kv.put(SearchConstants.CONTENT, content);
+        try {
+            store.addDoc(kv);
+        } catch (Throwable e) {
+            throw new RuntimeException("Cannot index vertex to search store", e);
+        }
+        addItem();
+        return true;
+    }
+
+    public List<GraphEntity> search(String key1, GraphAccessor graphAccessor) {
+        try {
+            String query = SearchUtils.formatQuery(key1);
+            TopDocs docs = store.searchDoc(SearchConstants.CONTENT, query);
+            ScoreDoc[] scoreDocArray = docs.scoreDocs;
+            Set<String> vertexLabels = graphAccessor.getGraphSchema().getVertexSchemaList()
+                    .stream().map(VertexSchema::getLabel).collect(Collectors.toSet());
+            Set<String> edgeLabels = graphAccessor.getGraphSchema().getEdgeSchemaList()
+                    .stream().map(EdgeSchema::getLabel).collect(Collectors.toSet());
+            List<GraphEntity> result = new ArrayList<>();
+            for (ScoreDoc scoreDoc : scoreDocArray) {
+                int docId = scoreDoc.doc;
+                Document document = store.getDoc(docId);
+                String label = document.get(SearchConstants.LABEL);
+                if (vertexLabels.contains(label)) {
+                    String id = document.get(SearchConstants.ID);
+                    GraphVertex graphVertex = graphAccessor.getVertex(label, id);
+                    if (graphVertex != null) {
+                        result.add(graphVertex);
+                    }
+                } else if (edgeLabels.contains(label)) {
+                    String src = document.get(SearchConstants.SRC);
+                    String dst = document.get(SearchConstants.DST);
+                    List<GraphEdge> graphEdge = graphAccessor.getEdge(label, src, dst);
+                    if (graphEdge != null) {
+                        result.addAll(graphEdge);
+                    }
+                }
+            }
+            return result;
+        } catch (Throwable e) {
+            throw new RuntimeException("Cannot read search store", e);
+        }
+    }
+
+    private void addItem() {
+        entityNum++;
+    }
+
+    public void close() {
+        try {
+            store.close();
+        } catch (Throwable e) {
+            throw new RuntimeException("Cannot close search store", e);
+        }
+    }
+
+    public Directory getDirectory() {
+        return store.getDirectory();
+    }
+
+    public Analyzer getAnalyzer() {
+        return store.getAnalyzer();
+    }
+
+    public IndexWriterConfig getConfig() {
+        return store.getConfig();
+    }
+
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchConstants.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchConstants.java
new file mode 100644
index 000000000..6a5ae0770
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchConstants.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.operator;
+
+public class SearchConstants {
+
+    public static String LABEL = "label";
+    public static String ID = "id";
+    public static String SRC = "src";
+    public static String DST = "dst";
+    public static String CONTENT = "content";
+    public static String OPERATOR = "operator";
+    public static String DELIMITER = "  ";
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchOperator.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchOperator.java
new file mode 100644
index 000000000..068bfd744
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchOperator.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.operator;
+
+import java.util.List;
+import org.apache.geaflow.ai.search.VectorSearch;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+
+public interface SearchOperator {
+
+    List<SubGraph> apply(List<SubGraph> subGraphList, VectorSearch search);
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchStore.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchStore.java
new file mode 100644
index 000000000..81183ae47
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchStore.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.operator;
+
+import java.io.IOException;
+import java.util.Map;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.queryparser.classic.ParseException;
+import org.apache.lucene.queryparser.classic.QueryParser;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.store.ByteBuffersDirectory;
+import org.apache.lucene.store.Directory;
+
+public class SearchStore {
+
+    private final Directory directory = new ByteBuffersDirectory();
+    private final Analyzer analyzer = new StandardAnalyzer();
+    private final IndexWriterConfig config = new IndexWriterConfig(analyzer);
+    private IndexWriter writer;
+    private boolean writeStats = false;
+    private IndexReader reader;
+    private IndexSearcher searcher;
+    private boolean readStats = false;
+
+    public SearchStore() {
+    }
+
+    public void addDoc(Map<String, String> kv) throws IOException {
+        initWriter();
+        Document doc = new Document();
+        for (Map.Entry<String, String> entry : kv.entrySet()) {
+            doc.add(new TextField(entry.getKey(), entry.getValue(), Field.Store.YES));
+        }
+        writer.addDocument(doc);
+    }
+
+    public TopDocs searchDoc(String field, String content) throws ParseException, IOException {
+        if (!readStats) {
+            reader = DirectoryReader.open(directory);
+            searcher = new IndexSearcher(reader);
+            readStats = true;
+        }
+        QueryParser parser = new QueryParser(field, analyzer);
+        return searcher.search(parser.parse(content), Constants.GRAPH_SEARCH_STORE_DEFAULT_TOPN);
+    }
+
+    public Document getDoc(int docId) {
+        try {
+            if (!readStats) {
+                reader = DirectoryReader.open(directory);
+                searcher = new IndexSearcher(reader);
+                readStats = true;
+            }
+            return searcher.doc(docId);
+        } catch (Throwable e) {
+            return null;
+        }
+
+    }
+
+    public void initWriter() throws IOException {
+        if (!writeStats) {
+            writer = new IndexWriter(directory, config);
+            writeStats = true;
+        }
+    }
+
+    public void close() throws IOException {
+        if (writeStats) {
+            writer.close();
+            writeStats = false;
+        }
+        if (readStats) {
+            reader.close();
+            readStats = false;
+        }
+    }
+
+
+    public Directory getDirectory() {
+        return directory;
+    }
+
+    public Analyzer getAnalyzer() {
+        return analyzer;
+    }
+
+    public IndexWriterConfig getConfig() {
+        return config;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchUtils.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchUtils.java
new file mode 100644
index 000000000..c60d21af3
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SearchUtils.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.operator;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+public class SearchUtils {
+
+    // Set of excluded characters: these will be replaced with spaces in formatQuery
+    private static final Set<Character> EXCLUDED_CHARS = new HashSet<>(Arrays.asList(
+            '*', '#', '-', '?', '`', '{', '}', '[', ']', '(', ')', '>', '<', ':', '/', '.'
+    ));
+
+    // Set of allowed characters for validation in isAllAllowedChars
+    // Includes: digits (0-9), and some common safe symbols
+    private static final Set<Character> IGNORE_CHARS = buildIgnoredChars();
+
+    /**
+     * Builds the set of allowed characters for input validation.
+     * Includes alphanumeric characters and selected common symbols.
+     *
+     * @return an unmodifiable set of ignored characters
+     */
+    private static Set<Character> buildIgnoredChars() {
+        Set<Character> ignored = new HashSet<>(32);
+        // Add digits
+        for (char c = '0'; c <= '9'; c++) {
+            ignored.add(c);
+        }
+        // Add commonly allowed symbols
+        ignored.add('.');
+        ignored.add('_');
+        ignored.add('-');
+        ignored.add('@');
+        ignored.add('+');
+        ignored.add('!');
+        ignored.add('$');
+        ignored.add('%');
+        ignored.add('&');
+        ignored.add('=');
+        ignored.add('~');
+        return Collections.unmodifiableSet(ignored);
+    }
+
+    /**
+     * Formats the input query string by replacing each excluded character with a space.
+     * This helps sanitize search queries for parsing or indexing.
+     *
+     * @param query the input string to format
+     * @return the formatted string with excluded characters replaced by spaces
+     */
+    public static String formatQuery(String query) {
+        if (query == null || query.isEmpty()) {
+            return query;
+        }
+        StringBuilder result = new StringBuilder();
+        for (char c : query.toCharArray()) {
+            if (EXCLUDED_CHARS.contains(c)) {
+                result.append(' ');
+            } else {
+                result.append(c);
+            }
+        }
+        String replacedQuery = result.toString();
+        replacedQuery = replacedQuery.replace("http", "");
+        return replacedQuery;
+    }
+
+    /**
+     * Checks whether all characters in the given string are within the allowed character set.
+     * Useful for validating usernames, identifiers, or safe input formats.
+     *
+     * @param str the string to validate
+     * @return true if all characters are allowed; false otherwise
+     */
+    public static boolean isAllAllowedChars(String str) {
+        if (str == null || str.isEmpty()) {
+            return false; // Consider empty/null invalid; adjust based on use case
+        }
+        for (char c : str.toCharArray()) {
+            if (IGNORE_CHARS.contains(c)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SessionOperator.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SessionOperator.java
new file mode 100644
index 000000000..4800c9341
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/operator/SessionOperator.java
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.operator;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.graph.GraphAccessor;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.index.IndexStore;
+import org.apache.geaflow.ai.index.vector.IVector;
+import org.apache.geaflow.ai.index.vector.VectorType;
+import org.apache.geaflow.ai.search.VectorSearch;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+
+public class SessionOperator implements SearchOperator {
+
+    private final GraphAccessor graphAccessor;
+    private final IndexStore indexStore;
+
+    public SessionOperator(GraphAccessor accessor, IndexStore store) {
+        this.graphAccessor = Objects.requireNonNull(accessor);
+        this.indexStore = Objects.requireNonNull(store);
+    }
+
+    @Override
+    public List<SubGraph> apply(List<SubGraph> subGraphList, VectorSearch search) {
+        List<IVector> keyWordVectors = search.getVectorMap().get(VectorType.KeywordVector);
+        if (keyWordVectors == null || keyWordVectors.isEmpty()) {
+            if (subGraphList == null) {
+                return new ArrayList<>();
+            }
+            return new ArrayList<>(subGraphList);
+        }
+        List<String> contents = new ArrayList<>(keyWordVectors.size());
+        for (IVector v : keyWordVectors) {
+            contents.add(v.toString());
+        }
+        String query = String.join(SearchConstants.DELIMITER, contents);
+        List<GraphEntity> globalResults = searchWithGlobalGraph(query);
+        if (subGraphList == null || subGraphList.isEmpty()) {
+            List<GraphVertex> startVertices = new ArrayList<>();
+            for (GraphEntity resEntity : globalResults) {
+                if (resEntity instanceof GraphVertex) {
+                    startVertices.add((GraphVertex) resEntity);
+                }
+            }
+            //Apply to subgraph
+            return startVertices.stream().map(v -> {
+                SubGraph subGraph = new SubGraph();
+                subGraph.addVertex(v);
+                return subGraph;
+            }).collect(Collectors.toList());
+        } else {
+            Map<GraphEntity, List<IVector>> extendEntityIndexMap = new HashMap<>();
+            //Traverse all extension points of the subgraph and search within the extension area
+            for (SubGraph subGraph : subGraphList) {
+                List<GraphEntity> extendEntities = getSubgraphExpand(subGraph);
+                for (GraphEntity extendEntity : extendEntities) {
+                    List<IVector> entityIndex = indexStore.getEntityIndex(extendEntity);
+                    extendEntityIndexMap.put(extendEntity, entityIndex);
+                }
+            }
+            //recall compute
+            GraphSearchStore searchStore = initSearchStore(extendEntityIndexMap);
+            searchStore.close();
+            List<GraphEntity> matchEntities = searchStore.search(query, graphAccessor);
+            Set<GraphEntity> matchEntitiesSet = new HashSet<>(matchEntities);
+
+            //Apply to subgraph
+            List<SubGraph> subGraphs = new ArrayList<>(subGraphList);
+            for (SubGraph subGraph : subGraphs) {
+                Set<GraphEntity> subgraphEntitySet = new HashSet<>(subGraph.getGraphEntityList());
+                List<GraphEntity> extendEntities = getSubgraphExpand(subGraph);
+                for (GraphEntity extendEntity : extendEntities) {
+                    if (matchEntitiesSet.contains(extendEntity)
+                            && !subgraphEntitySet.contains(extendEntity)) {
+                        subgraphEntitySet.add(extendEntity);
+                        subGraph.addEntity(extendEntity);
+                    }
+                }
+            }
+            return subGraphs;
+        }
+    }
+
+    private List<GraphEntity> getSubgraphExpand(SubGraph subGraph) {
+        List<GraphEntity> entityList = subGraph.getGraphEntityList();
+        List<GraphEntity> expandEntities = new ArrayList<>();
+        for (GraphEntity entity : entityList) {
+            List<GraphEntity> entityExpand = graphAccessor.expand(entity);
+            expandEntities.addAll(entityExpand);
+        }
+        return expandEntities;
+    }
+
+    private List<GraphEntity> searchWithGlobalGraph(String query) {
+        Map<GraphEntity, List<IVector>> entityIndexMap = new HashMap<>();
+        Iterator<GraphVertex> vertexIterator = graphAccessor.scanVertex();
+        while (vertexIterator.hasNext()) {
+            GraphVertex vertex = vertexIterator.next();
+            //Read all vertices indices from the index and add them to the candidate set.
+            List<IVector> vertexIndex = indexStore.getEntityIndex(vertex);
+            entityIndexMap.put(vertex, vertexIndex);
+        }
+        //recall compute
+        GraphSearchStore searchStore = initSearchStore(entityIndexMap);
+        searchStore.close();
+        return searchStore.search(query, graphAccessor);
+    }
+
+    private GraphSearchStore initSearchStore(Map<GraphEntity, List<IVector>> entityIndexMap) {
+        GraphSearchStore searchStore = new GraphSearchStore();
+        for (Map.Entry<GraphEntity, List<IVector>> entry : entityIndexMap.entrySet()) {
+            if (entry.getValue() != null && !entry.getValue().isEmpty()) {
+                if (entry.getKey() instanceof GraphVertex) {
+                    searchStore.indexVertex((GraphVertex) entry.getKey(), entry.getValue());
+                } else if (entry.getKey() instanceof GraphEdge) {
+                    searchStore.indexEdge((GraphEdge) entry.getKey(), entry.getValue());
+                }
+            }
+        }
+        return searchStore;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/search/VectorSearch.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/search/VectorSearch.java
new file mode 100644
index 000000000..98db3a34d
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/search/VectorSearch.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.search;
+
+import java.util.*;
+import org.apache.geaflow.ai.index.vector.IVector;
+import org.apache.geaflow.ai.index.vector.VectorType;
+
+public class VectorSearch {
+
+    public final String memoryId;
+
+    public final String sessionId;
+
+    public final Map<VectorType, List<IVector>> vectorList = new LinkedHashMap<>();
+
+    public VectorSearch(String memoryId, String sessionId) {
+        this.memoryId = memoryId;
+        this.sessionId = sessionId;
+    }
+
+    public void addVector(IVector vector) {
+        addVector(Collections.singletonList(vector));
+    }
+
+    public void addVector(List<IVector> vectors) {
+        if (vectors == null) {
+            return;
+        }
+        for (IVector v : vectors) {
+            if (v != null) {
+                vectorList.computeIfAbsent(v.getType(),
+                        k -> new ArrayList<>()).add(v);
+            }
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "VectorSearch{"
+                + "memoryId='" + memoryId + '\''
+                + ", sessionId='" + sessionId + '\''
+                + ", vectorList=" + vectorList
+                + '}';
+    }
+
+    public String getMemoryId() {
+        return memoryId;
+    }
+
+    public String getSessionId() {
+        return sessionId;
+    }
+
+    public Map<VectorType, List<IVector>> getVectorMap() {
+        return vectorList;
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/session/SessionManagement.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/session/SessionManagement.java
new file mode 100644
index 000000000..5c4b4a350
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/session/SessionManagement.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.session;
+
+import java.util.*;
+import org.apache.geaflow.ai.common.config.Constants;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+
+public class SessionManagement {
+
+    public static final SessionManagement INSTANCE = new SessionManagement();
+    private final Map<String, Long> session2ActiveTime = new HashMap<>();
+    private final Map<String, List<SubGraph>> session2Graphs = new HashMap<>();
+
+    private SessionManagement() {
+    }
+
+    public boolean createSession(String sessionId) {
+        if (session2ActiveTime.containsKey(sessionId)) {
+            return false;
+        }
+        session2ActiveTime.put(sessionId, System.nanoTime());
+        session2Graphs.putIfAbsent(sessionId, new ArrayList<>());
+        return true;
+    }
+
+    public String createSession() {
+        String sessionId = Constants.PREFIX_TMP_SESSION + System.nanoTime()
+                + UUID.randomUUID().toString().replace("-", "").substring(0, 8);
+        return createSession(sessionId) ? sessionId : null;
+    }
+
+    public boolean sessionExists(String session) {
+        return this.session2ActiveTime.containsKey(session);
+    }
+
+    public List<SubGraph> getSubGraph(String sessionId) {
+        List<SubGraph> l = this.session2Graphs.get(sessionId);
+        return l == null ? new ArrayList<>() : l;
+    }
+
+    public void setSubGraph(String sessionId, List<SubGraph> subGraphs) {
+        this.session2Graphs.put(sessionId, subGraphs);
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/subgraph/SubGraph.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/subgraph/SubGraph.java
new file mode 100644
index 000000000..6648a6aca
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/subgraph/SubGraph.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.subgraph;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+
+public class SubGraph {
+
+    private final List<GraphEntity> graphEntityList = new ArrayList<>();
+
+    public SubGraph addVertex(GraphVertex vertex) {
+        graphEntityList.add(vertex);
+        return this;
+    }
+
+    public SubGraph addEdge(GraphEdge edge) {
+        graphEntityList.add(edge);
+        return this;
+    }
+
+    public SubGraph addEntity(GraphEntity e) {
+        graphEntityList.add(e);
+        return this;
+    }
+
+    public List<GraphEntity> getGraphEntityList() {
+        return graphEntityList;
+    }
+
+    @Override
+    public String toString() {
+        return "SubGraph{"
+                + "graphEntityList=" + graphEntityList
+                + '}';
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/Context.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/Context.java
new file mode 100644
index 000000000..62a449831
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/Context.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.verbalization;
+
+public class Context {
+
+    private final String prompt;
+
+    public Context(String prompt) {
+        this.prompt = prompt;
+    }
+
+    @Override
+    public String toString() {
+        return "Context{"
+                + "prompt='" + prompt + '\''
+                + '}';
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/PromptFormatter.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/PromptFormatter.java
new file mode 100644
index 000000000..85f824dea
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/PromptFormatter.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.verbalization;
+
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.graph.io.GraphSchema;
+
+public interface PromptFormatter {
+
+    String prompt(GraphSchema graphSchema);
+
+    String prompt(GraphVertex entity);
+
+    String prompt(GraphEdge entity, GraphVertex start, GraphVertex end);
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/SubgraphSemanticPromptFunction.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/SubgraphSemanticPromptFunction.java
new file mode 100644
index 000000000..2aca60c0b
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/SubgraphSemanticPromptFunction.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.verbalization;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.graph.GraphAccessor;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.graph.io.GraphSchema;
+import org.apache.geaflow.ai.operator.SearchConstants;
+import org.apache.geaflow.ai.operator.SearchUtils;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+
+public class SubgraphSemanticPromptFunction implements VerbalizationFunction {
+
+    private final GraphAccessor graphAccessor;
+
+    public SubgraphSemanticPromptFunction(GraphAccessor accessor) {
+        this.graphAccessor = Objects.requireNonNull(accessor);
+    }
+
+    @Override
+    public String verbalize(SubGraph subGraph) {
+        if (subGraph == null || subGraph.getGraphEntityList().isEmpty()) {
+            return "Empty.";
+        }
+        List<String> sentences = new ArrayList<>();
+        GraphSchema schema = graphAccessor.getGraphSchema();
+        Set<GraphEntity> existsEntities = new HashSet<>();
+        for (GraphEntity entity : subGraph.getGraphEntityList()) {
+            if (entity instanceof GraphVertex) {
+                GraphVertex graphVertex = (GraphVertex) entity;
+                if (!existsEntities.contains(graphVertex)) {
+                    sentences.add(schema.getPrompt(graphVertex));
+                    existsEntities.add(graphVertex);
+                }
+            } else if (entity instanceof GraphEdge) {
+                GraphEdge graphEdge = (GraphEdge) entity;
+                GraphVertex start = graphAccessor.getVertex(null, graphEdge.getEdge().getSrcId());
+                GraphVertex end = graphAccessor.getVertex(null, graphEdge.getEdge().getDstId());
+                sentences.add(schema.getPrompt(graphEdge,
+                        existsEntities.contains(start) ? null : start,
+                        existsEntities.contains(end) ? null : end));
+                existsEntities.add(start);
+                existsEntities.add(end);
+            }
+        }
+        return String.join(SearchConstants.DELIMITER, sentences);
+    }
+
+    @Override
+    public List<String> verbalize(GraphEntity entity) {
+        if (entity instanceof GraphVertex) {
+            GraphVertex graphVertex = (GraphVertex) entity;
+            return graphVertex.getVertex().getValues().stream()
+                    .filter(SearchUtils::isAllAllowedChars)
+                    .map(SearchUtils::formatQuery).collect(Collectors.toList());
+        } else if (entity instanceof GraphEdge) {
+            GraphEdge graphEdge = (GraphEdge) entity;
+            return graphEdge.getEdge().getValues().stream()
+                    .filter(SearchUtils::isAllAllowedChars)
+                    .map(SearchUtils::formatQuery).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public String verbalizeGraphSchema() {
+        return "";
+    }
+}
diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/VerbalizationFunction.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/VerbalizationFunction.java
new file mode 100644
index 000000000..6e90bc17a
--- /dev/null
+++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/verbalization/VerbalizationFunction.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai.verbalization;
+
+import java.util.List;
+import org.apache.geaflow.ai.graph.GraphEntity;
+import org.apache.geaflow.ai.subgraph.SubGraph;
+
+public interface VerbalizationFunction {
+
+    String verbalize(SubGraph subGraph);
+
+    List<String> verbalize(GraphEntity entity);
+
+    String verbalizeGraphSchema();
+}
diff --git a/geaflow-ai/src/main/resources/log4j.properties b/geaflow-ai/src/main/resources/log4j.properties
new file mode 100644
index 000000000..74d3697fd
--- /dev/null
+++ b/geaflow-ai/src/main/resources/log4j.properties
@@ -0,0 +1,26 @@
+################################################################################
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+# This affects logging for both user code and framework.
+log4j.rootLogger=INFO, console
+
+# console output
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.Target=System.out
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
diff --git a/geaflow-ai/src/test/java/org/apache/geaflow/ai/GraphMemoryTest.java b/geaflow-ai/src/test/java/org/apache/geaflow/ai/GraphMemoryTest.java
new file mode 100644
index 000000000..6216cb344
--- /dev/null
+++ b/geaflow-ai/src/test/java/org/apache/geaflow/ai/GraphMemoryTest.java
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai;
+
+import org.apache.geaflow.ai.common.model.ModelConfig;
+import org.apache.geaflow.ai.graph.EmptyGraphAccessor;
+import org.apache.geaflow.ai.graph.GraphAccessor;
+import org.apache.geaflow.ai.graph.LocalMemoryGraphAccessor;
+import org.apache.geaflow.ai.index.EmbeddingIndexStore;
+import org.apache.geaflow.ai.index.EntityAttributeIndexStore;
+import org.apache.geaflow.ai.index.IndexStore;
+import org.apache.geaflow.ai.index.vector.EmbeddingVector;
+import org.apache.geaflow.ai.index.vector.KeywordVector;
+import org.apache.geaflow.ai.index.vector.MagnitudeVector;
+import org.apache.geaflow.ai.index.vector.TraversalVector;
+import org.apache.geaflow.ai.search.VectorSearch;
+import org.apache.geaflow.ai.verbalization.Context;
+import org.apache.geaflow.ai.verbalization.SubgraphSemanticPromptFunction;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GraphMemoryTest {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(GraphMemoryTest.class);
+
+    @Test
+    public void testVectorSearch() {
+        VectorSearch search = new VectorSearch(null, "test01");
+        search.addVector(new EmbeddingVector(new double[0]));
+        search.addVector(new KeywordVector("test1", "test2"));
+        search.addVector(new MagnitudeVector());
+        search.addVector(new TraversalVector("src", "edge", "dst"));
+        LOGGER.info(String.valueOf(search));
+    }
+
+    @Test
+    public void testEmptyMainPipeline() {
+        GraphMemoryServer server = new GraphMemoryServer();
+        IndexStore indexStore = new EntityAttributeIndexStore();
+        GraphAccessor graphAccessor = new EmptyGraphAccessor();
+        server.addGraphAccessor(graphAccessor);
+        server.addIndexStore(indexStore);
+
+        String sessionId = server.createSession();
+        VectorSearch search = new VectorSearch(null, sessionId);
+        String context = produceCycle(server, search, graphAccessor);
+        Assertions.assertEquals(context, "Context{prompt=''}");
+
+        context = produceCycle(server, search, graphAccessor);
+        Assertions.assertEquals(context, "Context{prompt=''}");
+
+        context = produceCycle(server, search, graphAccessor);
+        Assertions.assertEquals(context, "Context{prompt=''}");
+    }
+
+    private String produceCycle(GraphMemoryServer server, VectorSearch search,
+                                GraphAccessor graphAccessor) {
+        String sessionId = search.getSessionId();
+        String searchResult = server.search(search);
+        Assertions.assertNotNull(searchResult);
+        Context context = server.verbalize(sessionId,
+                new SubgraphSemanticPromptFunction(graphAccessor));
+        Assertions.assertNotNull(context);
+        return context.toString();
+    }
+
+    @Test
+    public void testLdbcMainPipeline() {
+        LdbcPromptFormatter ldbcPromptFormatter = new LdbcPromptFormatter();
+        LocalMemoryGraphAccessor graphAccessor =
+                new LocalMemoryGraphAccessor(this.getClass().getClassLoader(),
+                        "graph_ldbc_sf", 7500L,
+                        ldbcPromptFormatter::vertexMapper, ldbcPromptFormatter::edgeMapper);
+        graphAccessor.getGraphSchema().setPromptFormatter(ldbcPromptFormatter);
+        LOGGER.info("Success to init graph data.");
+
+        EntityAttributeIndexStore indexStore = new EntityAttributeIndexStore();
+        indexStore.initStore(new SubgraphSemanticPromptFunction(graphAccessor));
+        LOGGER.info("Success to init EntityAttributeIndexStore.");
+
+        ModelConfig modelInfo = new ModelConfig(null, null, null, null);
+        EmbeddingIndexStore embeddingStore = new EmbeddingIndexStore();
+        embeddingStore.initStore(graphAccessor,
+            new SubgraphSemanticPromptFunction(graphAccessor),
+            "src/test/resources/index/LDBCEmbeddingIndexStore",
+            modelInfo);
+        LOGGER.info("Success to init EmbeddingIndexStore.");
+
+        GraphMemoryServer server = new GraphMemoryServer();
+        server.addGraphAccessor(graphAccessor);
+        server.addIndexStore(indexStore);
+        server.addIndexStore(embeddingStore);
+        MockChatRobot robot = new MockChatRobot();
+        robot.setModelInfo(modelInfo);
+
+        {
+            String sessionId = server.createSession();
+            VectorSearch search = new VectorSearch(null, sessionId);
+            String query = "What comments has Chaim Azriel posted?";
+            search.addVector(new KeywordVector(query));
+            search.addVector(new EmbeddingVector(robot.embeddingSingle(query).embedding));
+            LOGGER.info("Round 1: \n" + search);
+
+            String context = produceCycle(server, search, graphAccessor);
+            LOGGER.info("Round 1: \n" + context);
+            Assertions.assertTrue(context.contains("A Person, male, register at 2010-02-19T12:42:14.255+00:00, id is Person166, name is Chaim Azriel Hleb, birthday is 1985-10-01, ip is 178.238.2.172, use browser is Firefox, use language are ru;pl;en, email address is Chaim.Azriel166@yahoo.com;Chaim.Azriel166@gmail.com;Chaim.Azriel166@gmx.com;Chaim.Azriel166@hotmail.com;Chaim.Azriel166@theblackmarket.com"));
+            Assertions.assertTrue(context.contains("A Person, male, register at 2011-09-18T02:40:31.062+00:00, id is Person21990232556059, name is Chaim Azriel Epstein, birthday is 1981-07-17, ip is 80.94.167.126, use browser is Firefox, use language are ru;pl;en, email address is Chaim.Azriel21990232556059@gmx.com;Chaim.Azriel21990232556059@gmail.com;Chaim.Azriel21990232556059@hotmail.com;Chaim.Azriel21990232556059@yahoo.com;Chaim.Azriel21990232556059@zoho.com"));
+
+            search = new VectorSearch(null, sessionId);
+            query = "Chaim Azriel, Comment_hasCreator_Person, personId, comment author, Person166, Person21990232556059";
+            search.addVector(new KeywordVector(query));
+            search.addVector(new EmbeddingVector(robot.embeddingSingle(query).embedding));
+            LOGGER.info("Round 2: \n" + search);
+
+            context = produceCycle(server, search, graphAccessor);
+            LOGGER.info("Round 2: \n" + context);
+            Assertions.assertTrue(context.contains("Comment824633737550"));
+            Assertions.assertTrue(context.contains("Comment962072691263"));
+            Assertions.assertTrue(context.contains("Comment687194784946"));
+        }
+
+        {
+            String sessionId = server.createSession();
+            VectorSearch search = new VectorSearch(null, sessionId);
+            String query = "How many posts has Chaim Azriel posted?";
+            search.addVector(new KeywordVector(query));
+            search.addVector(new EmbeddingVector(robot.embeddingSingle(query).embedding));
+
+            LOGGER.info("Round 1: \n" + search);
+
+            String context = produceCycle(server, search, graphAccessor);
+            LOGGER.info("Round 1: \n" + context);
+            Assertions.assertTrue(context.contains("A Forum, name is Wall of Chaim Azriel Hleb, id is Forum220, created at 2010-02-19T12:42:24.255+00:00"));
+            Assertions.assertTrue(context.contains("A Person, male, register at 2010-02-19T12:42:14.255+00:00, id is Person166, name is Chaim Azriel Hleb, birthday is 1985-10-01, ip is 178.238.2.172, use browser is Firefox, use language are ru;pl;en, email address is Chaim.Azriel166@yahoo.com;Chaim.Azriel166@gmail.com;Chaim.Azriel166@gmx.com;Chaim.Azriel166@hotmail.com;Chaim.Azriel166@theblackmarket.com"));
+            Assertions.assertTrue(context.contains("A Person, male, register at 2011-09-18T02:40:31.062+00:00, id is Person21990232556059, name is Chaim Azriel Epstein, birthday is 1981-07-17, ip is 80.94.167.126, use browser is Firefox, use language are ru;pl;en, email address is Chaim.Azriel21990232556059@gmx.com;Chaim.Azriel21990232556059@gmail.com;Chaim.Azriel21990232556059@hotmail.com;Chaim.Azriel21990232556059@yahoo.com;Chaim.Azriel21990232556059@zoho.com"));
+
+            search = new VectorSearch(null, sessionId);
+            query = "Chaim Azriel, Post_hasCreator_Person, Post";
+            search.addVector(new KeywordVector(query));
+            search.addVector(new EmbeddingVector(robot.embeddingSingle(query).embedding));
+            LOGGER.info("Round 2: \n" + search);
+
+            context = produceCycle(server, search, graphAccessor);
+            LOGGER.info("Round 2: \n" + context);
+            Assertions.assertTrue(context.contains("Post755914247530"));
+            Assertions.assertTrue(context.contains("Post1099511644342"));
+            Assertions.assertTrue(context.contains("Person166"));
+        }
+
+        {
+            String sessionId = server.createSession();
+            VectorSearch search = new VectorSearch(null, sessionId);
+            String query = "Which historical comments exist, who posted them, and how many have been published?";
+            search.addVector(new KeywordVector(query));
+            search.addVector(new EmbeddingVector(robot.embeddingSingle(query).embedding));
+
+            LOGGER.info("Round 1: \n" + search);
+
+            String context = produceCycle(server, search, graphAccessor);
+            LOGGER.info("Round 1: \n" + context);
+            Assertions.assertTrue(context.contains("Comment1099511634167"));
+            Assertions.assertTrue(context.contains("Comment1030792164752"));
+            Assertions.assertTrue(context.contains("Comment1099511645848"));
+
+            search = new VectorSearch(null, sessionId);
+            query = "Comment_hasCreator_Person, Person, Comment IDs, Comment1030792157359";
+            search.addVector(new KeywordVector(query));
+            search.addVector(new EmbeddingVector(robot.embeddingSingle(query).embedding));
+            LOGGER.info("Round 2: \n" + search);
+
+            context = produceCycle(server, search, graphAccessor);
+            LOGGER.info("Round 2: \n" + context);
+            Assertions.assertTrue(context.contains("Person24189255812253"));
+            Assertions.assertTrue(context.contains("Person26388279067480"));
+        }
+    }
+}
diff --git a/geaflow-ai/src/test/java/org/apache/geaflow/ai/LdbcPromptFormatter.java b/geaflow-ai/src/test/java/org/apache/geaflow/ai/LdbcPromptFormatter.java
new file mode 100644
index 000000000..f0560a547
--- /dev/null
+++ b/geaflow-ai/src/test/java/org/apache/geaflow/ai/LdbcPromptFormatter.java
@@ -0,0 +1,315 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai;
+
+import java.util.stream.Collectors;
+import org.apache.geaflow.ai.graph.GraphEdge;
+import org.apache.geaflow.ai.graph.GraphVertex;
+import org.apache.geaflow.ai.graph.io.*;
+import org.apache.geaflow.ai.verbalization.PromptFormatter;
+
+public class LdbcPromptFormatter implements PromptFormatter {
+
+    public Vertex vertexMapper(Vertex v) {
+        String idPrefix = v.getLabel();
+        return new Vertex(v.getLabel(), idPrefix + v.getId(), v.getValues());
+    }
+
+    public Edge edgeMapper(Edge e) {
+        String srcPrefix = "";
+        String dstPrefix = "";
+        switch (e.getLabel()) {
+            case "Forum_hasMember_Person":
+            case "Forum_hasModerator_Person":
+                srcPrefix = "Forum";
+                dstPrefix = "Person";
+                break;
+            case "Person_knows_Person":
+                srcPrefix = "Person";
+                dstPrefix = "Person";
+                break;
+            case "Comment_replyOf_Post":
+                srcPrefix = "Comment";
+                dstPrefix = "Post";
+                break;
+            case "Person_isLocatedIn_City":
+                srcPrefix = "Person";
+                dstPrefix = "Place";
+                break;
+            case "Comment_hasTag_Tag":
+                srcPrefix = "Comment";
+                dstPrefix = "Tag";
+                break;
+            case "Person_workAt_Company":
+                srcPrefix = "Person";
+                dstPrefix = "Company";
+                break;
+            case "Comment_replyOf_Comment":
+                srcPrefix = "Comment";
+                dstPrefix = "Comment";
+                break;
+            case "Organisation_isLocatedIn_Place":
+                srcPrefix = "Organisation";
+                dstPrefix = "Place";
+                break;
+            case "Comment_isLocatedIn_Country":
+                srcPrefix = "Comment";
+                dstPrefix = "Country";
+                break;
+            case "Person_hasInterest_Tag":
+                srcPrefix = "Person";
+                dstPrefix = "Tag";
+                break;
+            case "Forum_hasTag_Tag":
+                srcPrefix = "Forum";
+                dstPrefix = "Tag";
+                break;
+            case "Person_studyAt_University":
+                srcPrefix = "Person";
+                dstPrefix = "Organisation";
+                break;
+            case "Comment_hasCreator_Person":
+                srcPrefix = "Comment";
+                dstPrefix = "Person";
+                break;
+            case "TagClass_isSubclassOf_TagClass":
+                srcPrefix = "TagClass";
+                dstPrefix = "TagClass";
+                break;
+            case "Post_isLocatedIn_Country":
+                srcPrefix = "Post";
+                dstPrefix = "Country";
+                break;
+            case "Post_hasCreator_Person":
+                srcPrefix = "Post";
+                dstPrefix = "Person";
+                break;
+            case "Post_hasTag_Tag":
+                srcPrefix = "Post";
+                dstPrefix = "Tag";
+                break;
+            case "Person_likes_Post":
+                srcPrefix = "Person";
+                dstPrefix = "Post";
+                break;
+            case "Person_likes_Comment":
+                srcPrefix = "Person";
+                dstPrefix = "Comment";
+                break;
+            case "Forum_containerOf_Post":
+                srcPrefix = "Forum";
+                dstPrefix = "Post";
+                break;
+            case "Tag_hasType_TagClass":
+                srcPrefix = "Tag";
+                dstPrefix = "TagClass";
+                break;
+            case "Place_isPartOf_Place":
+                srcPrefix = "Place";
+                dstPrefix = "Place";
+                break;
+            default:
+                srcPrefix = "";
+                dstPrefix = "";
+                break;
+        }
+        return new Edge(e.getLabel(), srcPrefix + e.getSrcId(),
+                dstPrefix + e.getDstId(), e.getValues());
+    }
+
+    @Override
+    public String prompt(GraphSchema graphSchema) {
+        return "allVerticesType:[" + graphSchema.getVertexSchemaList()
+                .stream().map(VertexSchema::getLabel).collect(Collectors.joining(",")) + "]\n"
+                + "allRelations:[" + graphSchema.getEdgeSchemaList()
+                .stream().map(EdgeSchema::getLabel).collect(Collectors.joining(",")) + "]\n";
+    }
+
+    @Override
+    public String prompt(GraphVertex entity) {
+        if (entity == null) {
+            return "Empty Vertex.";
+        } else if (entity.getVertex() == null) {
+            return "The Vertex.";
+        }
+        Vertex obj;
+        Edge edge;
+        switch (entity.getLabel()) {
+            case "Person":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("A Person, %s, register at %s, id is %s, name is %s %s, birthday is %s, "
+                                + "ip is %s, use browser is %s, use language are %s, email address is %s",
+                        obj.getValues().get(4), obj.getValues().get(0), obj.getId(),
+                        obj.getValues().get(2), obj.getValues().get(3), obj.getValues().get(5),
+                        obj.getValues().get(6), obj.getValues().get(7), obj.getValues().get(8), obj.getValues().get(9));
+            case "Forum":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("A Forum, name is %s, id is %s, created at %s",
+                        obj.getValues().get(2), obj.getId(), obj.getValues().get(0));
+            case "TagClass":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("A TagClass, name is %s, id is %s, url %s",
+                        obj.getValues().get(1), obj.getId(), obj.getValues().get(2));
+            case "Tag":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("A tag, name is %s, id is %s, url %s",
+                        obj.getValues().get(1), obj.getId(), obj.getValues().get(2));
+            case "Comment":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("A comment, id is %s, created at %s, user ip is %s, "
+                                + "user use browser is %s, content is %s",
+                        obj.getId(), obj.getValues().get(0), obj.getValues().get(2), obj.getValues().get(3), obj.getValues().get(4));
+            case "Post":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("A post, id is %s, created at %s, user ip is %s, "
+                                + "user use browser is %s, use language is %s, content is %s",
+                        obj.getId(), obj.getValues().get(0), obj.getValues().get(3), obj.getValues().get(4), obj.getValues().get(5), obj.getValues().get(6));
+            case "Organisation":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("An organisation of %s, name is %s, id is %s, url %s",
+                        obj.getValues().get(1), obj.getValues().get(2), obj.getId(), obj.getValues().get(3));
+            case "Place":
+                obj = ((GraphVertex) entity).getVertex();
+                return String.format("A place of %s, name is %s, id is %s, url %s",
+                        obj.getValues().get(3), obj.getValues().get(1), obj.getId(), obj.getValues().get(2));
+            default:
+                return entity.toString();
+        }
+    }
+
+    @Override
+    public String prompt(GraphEdge entity, GraphVertex start, GraphVertex end) {
+        if (entity == null) {
+            return "Empty Edge.";
+        } else if (entity.getEdge() == null) {
+            return "The Edge.";
+        }
+        StringBuilder builder = new StringBuilder();
+        builder.append(promptEdge(entity));
+        builder.append("\n  startVertex:");
+        builder.append(prompt(start));
+        builder.append("\n  endVertex:");
+        builder.append(prompt(end));
+        return builder.toString();
+    }
+
+    public String promptEdge(GraphEdge entity) {
+        if (entity == null || entity.getEdge() == null) {
+            return "Empty Edge.";
+        }
+        Edge edge;
+        switch (entity.getLabel()) {
+            case "Forum_hasMember_Person":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Forum_hasMember_Person, Forum id %s has member id %s, register at %s",
+                        edge.getSrcId(), edge.getDstId(), edge.getValues().get(0));
+            case "Person_workAt_Company":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Person_workAt_Company, Person id %s work at company id %s, start from %s year",
+                        edge.getSrcId(), edge.getDstId(), edge.getValues().get(3));
+            case "Organisation_isLocatedIn_Place":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Organisation_isLocatedIn_Place, Organisation id %s is located in place id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Person_hasInterest_Tag":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Person_hasInterest_Tag, Person id %s interest at tag id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Forum_hasTag_Tag":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Forum_hasTag_Tag, Forum id %s has tag id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Forum_hasModerator_Person":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Forum_hasModerator_Person, Forum id %s has moderator id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Forum_containerOf_Post":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Forum_containerOf_Post, Forum id %s contain of the post id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Tag_hasType_TagClass":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Tag_hasType_TagClass, Tag id %s has type of tag class id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Place_isPartOf_Place":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Place_isPartOf_Place, The place id %s is part of place id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Person_isLocatedIn_City":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Person_isLocatedIn_City, The person id %s is located in city id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Person_knows_Person":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Person_knows_Person, The person id %s knows person id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Person_studyAt_University":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Person_studyAt_University, The person id %s study at university id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Comment_hasCreator_Person":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Comment_hasCreator_Person, The comment id %s has creator person id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Post_hasCreator_Person":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Post_hasCreator_Person, The post id %s has creator person id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Person_likes_Post":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Person_likes_Post, The person id %s likes person id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Person_likes_Comment":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Person_likes_Comment, The person id %s likes comment id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Comment_replyOf_Post":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Comment_replyOf_Post, The comment id %s reply of the post id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Post_isLocatedIn_Country":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Post_isLocatedIn_Country, The post id %s is located in country id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Post_hasTag_Tag":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Post_hasTag_Tag, The post id %s has tag id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Comment_hasTag_Tag":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Comment_hasTag_Tag, The comment id %s has tag id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Comment_isLocatedIn_Country":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Comment_isLocatedIn_Country, The comment id %s is located in country id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "Comment_replyOf_Comment":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type Comment_replyOf_Comment, The comment id %s is reply of comment id %s",
+                        edge.getSrcId(), edge.getDstId());
+            case "TagClass_isSubclassOf_TagClass":
+                edge = ((GraphEdge) entity).getEdge();
+                return String.format("One edge of Type TagClass_isSubclassOf_TagClass, The tag class id %s is subclass of the tag class id %s",
+                        edge.getSrcId(), edge.getDstId());
+            default:
+                return entity.toString();
+        }
+    }
+}
diff --git a/geaflow-ai/src/test/java/org/apache/geaflow/ai/MockChatRobot.java b/geaflow-ai/src/test/java/org/apache/geaflow/ai/MockChatRobot.java
new file mode 100644
index 000000000..2b1248247
--- /dev/null
+++ b/geaflow-ai/src/test/java/org/apache/geaflow/ai/MockChatRobot.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai;
+
+import org.apache.geaflow.ai.common.model.EmbeddingService;
+import org.apache.geaflow.ai.common.model.ModelConfig;
+
+public class MockChatRobot {
+
+    private ModelConfig modelInfo;
+
+    public MockChatRobot() {
+        this.modelInfo = new ModelConfig();
+    }
+
+    public MockChatRobot(String model) {
+        this.modelInfo = new ModelConfig();
+        this.modelInfo.setModel(model);
+    }
+
+    public EmbeddingService.EmbeddingResult embeddingSingle(String input) {
+        return new EmbeddingService.EmbeddingResult(input, new double[0]);
+    }
+
+    public ModelConfig getModelInfo() {
+        return modelInfo;
+    }
+
+    public void setModelInfo(ModelConfig modelInfo) {
+        this.modelInfo = modelInfo;
+    }
+}
diff --git a/geaflow-ai/src/test/java/org/apache/geaflow/ai/MutableGraphTest.java b/geaflow-ai/src/test/java/org/apache/geaflow/ai/MutableGraphTest.java
new file mode 100644
index 000000000..dd2463c9c
--- /dev/null
+++ b/geaflow-ai/src/test/java/org/apache/geaflow/ai/MutableGraphTest.java
@@ -0,0 +1,142 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geaflow.ai;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.geaflow.ai.graph.LocalMemoryGraphAccessor;
+import org.apache.geaflow.ai.graph.MemoryMutableGraph;
+import org.apache.geaflow.ai.graph.io.*;
+import org.apache.geaflow.ai.index.EntityAttributeIndexStore;
+import org.apache.geaflow.ai.index.vector.KeywordVector;
+import org.apache.geaflow.ai.search.VectorSearch;
+import org.apache.geaflow.ai.verbalization.Context;
+import org.apache.geaflow.ai.verbalization.SubgraphSemanticPromptFunction;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MutableGraphTest {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(MutableGraphTest.class);
+
+    @Test
+    public void testMutableGraph() {
+        GraphSchema graphSchema = new GraphSchema();
+        VertexSchema vertexSchema = new VertexSchema("chunk", "id",
+            Collections.singletonList("text"));
+        EdgeSchema edgeSchema = new EdgeSchema("relation", "srcId", "dstId",
+            Collections.singletonList("rel"));
+        graphSchema.addVertex(vertexSchema);
+        graphSchema.addEdge(edgeSchema);
+        Map<String, EntityGroup > entities = new HashMap<>();
+        entities.put(vertexSchema.getName(), new VertexGroup(vertexSchema, new ArrayList<>()));
+        entities.put(edgeSchema.getName(), new EdgeGroup(edgeSchema, new ArrayList<>()));
+        MemoryGraph graph = new MemoryGraph(graphSchema, entities);
+
+        LocalMemoryGraphAccessor graphAccessor = new LocalMemoryGraphAccessor(graph);
+        MemoryMutableGraph memoryMutableGraph = new MemoryMutableGraph(graph);
+        LOGGER.info("Success to init empty graph.");
+
+        EntityAttributeIndexStore indexStore = new EntityAttributeIndexStore();
+        indexStore.initStore(new SubgraphSemanticPromptFunction(graphAccessor));
+        LOGGER.info("Success to init EntityAttributeIndexStore.");
+
+        GraphMemoryServer server = new GraphMemoryServer();
+        server.addGraphAccessor(graphAccessor);
+        server.addIndexStore(indexStore);
+        LOGGER.info("Success to init GraphMemoryServer.");
+
+        memoryMutableGraph.addVertex(new Vertex(vertexSchema.getName(),
+            "apple", Collections.singletonList("apple is a kind of fruit.")));
+        memoryMutableGraph.addVertex(new Vertex(vertexSchema.getName(),
+            "banana", Collections.singletonList("banana is a kind of fruit.")));
+        memoryMutableGraph.addVertex(new Vertex(vertexSchema.getName(),
+            "grape", Collections.singletonList("grape is a kind of fruit.")));
+
+        String query = "How about apple?";
+        String result = searchInGraph(server, graphAccessor, query, 1);
+        LOGGER.info("query: {} result: {}", query, result);
+        Assertions.assertTrue(result.contains("apple"));
+
+        memoryMutableGraph.addVertex(new Vertex(vertexSchema.getName(),
+            "red", Collections.singletonList("red is a kind of color.")));
+        memoryMutableGraph.addVertex(new Vertex(vertexSchema.getName(),
+            "yellow", Collections.singletonList("yellow is a kind of color.")));
+        memoryMutableGraph.addVertex(new Vertex(vertexSchema.getName(),
+            "purple", Collections.singletonList("purple is a kind of color.")));
+        memoryMutableGraph.addEdge(new Edge(edgeSchema.getName(),
+            "apple", "red", Collections.singletonList("apple is red.")));
+        memoryMutableGraph.addEdge(new Edge(edgeSchema.getName(),
+            "banana", "yellow", Collections.singletonList("apple is yellow.")));
+        memoryMutableGraph.addEdge(new Edge(edgeSchema.getName(),
+            "grape", "purple", Collections.singletonList("apple is purple.")));
+
+        query = "What color is apple?";
+        result = searchInGraph(server, graphAccessor, query, 3);
+        LOGGER.info("query: {} result: {}", query, result);
+        Assertions.assertTrue(result.contains("apple is red"));
+
+        memoryMutableGraph.updateVertex(new Vertex(vertexSchema.getName(),
+            "red", Collections.singletonList("red is not a kind of fruit.")));
+
+        query = "How about red?";
+        result = searchInGraph(server, graphAccessor, query, 1);
+        LOGGER.info("query: {} result: {}", query, result);
+        Assertions.assertTrue(result.contains("red is not a kind of fruit."));
+
+        memoryMutableGraph.removeVertex(vertexSchema.getName(), "yellow");
+        query = "How about yellow?";
+        result = searchInGraph(server, graphAccessor, query, 1);
+        LOGGER.info("query: {} result: {}", query, result);
+        Assertions.assertFalse(result.contains("yellow is a kind of color."));
+
+        memoryMutableGraph.removeEdge(new Edge(edgeSchema.getName(),
+            "apple", "red", Collections.singletonList("apple is red.")));
+
+        query = "What color is apple?";
+        result = searchInGraph(server, graphAccessor, query, 3);
+        LOGGER.info("query: {} result: {}", query, result);
+        Assertions.assertFalse(result.contains("apple is red."));
+        Assertions.assertTrue(result.contains("apple is a kind of fruit."));
+        Assertions.assertTrue(result.contains("red is not a kind of fruit."));
+
+    }
+
+    private String searchInGraph(GraphMemoryServer server,
+                                 LocalMemoryGraphAccessor graphAccessor,
+                                 String query, int times) {
+        String sessionId = server.createSession();
+        Context context = null;
+        for (int i = 0; i < times; i++) {
+            VectorSearch search = new VectorSearch(null, sessionId);
+            search.addVector(new KeywordVector(query));
+            String searchResult = server.search(search);
+            Assertions.assertNotNull(searchResult);
+            context = server.verbalize(sessionId,
+                new SubgraphSemanticPromptFunction(graphAccessor));
+        }
+        assert context != null;
+        return context.toString();
+    }
+}
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment/part-00000-0ea3b18b-e932-4946-9be9-d17b750eafea-c0001.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment/part-00000-0ea3b18b-e932-4946-9be9-d17b750eafea-c0001.csv
new file mode 100644
index 000000000..72b4d1bd3
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment/part-00000-0ea3b18b-e932-4946-9be9-d17b750eafea-c0001.csv
@@ -0,0 +1,58 @@
+creationDate|id|locationIP|browserUsed|content|length
+2012-06-09T01:12:54.446+00:00|962072674715|200.13.148.38|Internet Explorer|About Jerry Lee Lewis, t the Star Club, Hamburg is often regarded by many music journalists and fans as one of tAbout A Thousand Leaves,  same name. It was Thurston Moore who ca|177
+2012-09-14T09:46:25.139+00:00|1099511628874|14.208.255.176|Chrome|About Soviet Union, against the United States and its Western allies, which it ultimately abandoned in the face of economic troubles and both dome|146
+2011-05-02T16:58:17.418+00:00|481036339294|49.15.114.196|Chrome|About Mahmud of Ghazni, n Iran, as well as Pakistan and North-West India. About Jonathan Swift,  his poetry. Swift originally published all of hisAbo|149
+2012-03-29T23:30:38.739+00:00|893353200586|190.108.133.151|Chrome|About Cicero,  political careAbout John Milton, Milton has beenAbout Famous Blue Raincoa|88
+2011-05-14T11:39:13.717+00:00|549755817022|204.79.148.85|Chrome|About Henry VIII of England, s to the Kingdom of France. About How Do I Live, terw|82
+2011-09-24T12:40:19.833+00:00|687194770827|192.160.111.235|Internet Explorer|About Nelson Mandela,  Campus. Questions have been raised reAbout Johannes Brahms, luence were considerable; following a About First Czechoslovak Repub|151
+2012-11-15T02:36:43.777+00:00|1168231108471|1.1.55.29|Firefox|About Joni Mitchell,  guitar anAbout Louis IX of France, e many plaAbout H. G.|78
+2012-07-06T20:53:55.679+00:00|962072679199|2.210.112.200|Internet Explorer|About What You Get Is What You See, he Extended Rock Mix and a live version recorded|84
+2012-08-01T08:36:33.825+00:00|1030792156402|49.156.111.104|Firefox|About Henry Kissinger,  still sought by many subsequenAbout Matt Groening,  on Life in Hel|90
+2012-08-27T02:38:29.705+00:00|1030792156421|27.112.77.149|Safari|About Walter Scott, ith many conteAbout That Old Black Magic, n F. Kennedy tAbout|82
+2012-11-27T20:22:27.975+00:00|1168231110537|200.0.27.84|Firefox|About Margaret Thatcher, ritish politician andAbout Harry S. Truman, rom many si|80
+2012-04-30T20:38:13.495+00:00|893353203618|1.1.55.29|Firefox|About Anne, Queen of Great Britain, d many of them from offAbout David Hockney, ho is ba|88
+2012-07-23T01:16:24.333+00:00|1030792157359|31.130.237.152|Internet Explorer|About Johnny Cash, ists, and received many awards and acAbout Giuseppe Verdi,  from Aida. Verdi’s masterworks dominAbout Deep Water Slang V2.0, iti|147
+2012-07-10T19:26:34.455+00:00|1030792157384|61.4.67.186|Firefox|About David Bowie, His influence has beAbout Rihanna, cord producer Evan RAb|76
+2012-10-16T02:58:38.711+00:00|1099511634167|27.116.45.53|Firefox|About Duchy of Milan, e, and ceased to exist a year later as the result of the Treaty o|87
+2012-11-12T15:56:05.947+00:00|1168231110927|103.3.44.217|Firefox|About Herbie Hancock, unk and soul while adoptinAbout Chad, le many politica|76
+2012-02-11T04:21:53.564+00:00|824633727481|41.207.39.119|Chrome|About Gaetano Donizetti, cenzo Bellini andAbout Marilyn Monroe, es, have been theAb|83
+2012-10-16T21:09:33.786+00:00|1099511634603|175.111.181.120|Firefox|About W. H. Auden, 60s many of his poems focused on the ways in which words|75
+2012-10-17T11:31:10.224+00:00|1099511634811|27.111.53.107|Internet Explorer|About Aldous Huxley, uxley also edited the magazine Oxford Poetry, and published short st|89
+2012-11-11T03:25:59.947+00:00|1168231112614|1.2.1.48|Firefox|About Mahmoud Ahmadinejad, es and statements, including what many commentators perceive to be calls to desAbout Oliver Stone,  of films about the Vietnam War|157
+2012-11-10T21:20:57.199+00:00|1168231112625|192.190.31.253|Chrome|About Nikita Khrushchev, re. During what was known in the Soviet Union as the|77
+2012-11-17T00:07:54.237+00:00|1168231112641|27.148.183.3|Firefox|About Moon River,  a study on people's memories of popular songs. Comments abo|78
+2012-08-17T00:07:59.936+00:00|1030792159190|203.144.56.205|Internet Explorer|About Dusty Springfield, s What Have I Done to Deserve This?, Nothing Has BeenAbout Pure Morning, g (199|104
+2012-02-20T16:23:51.328+00:00|824633729078|203.144.56.205|Internet Explorer|About Say What You Want, . Both versions featured on their 2000 album The Greatest Hits. I|90
+2012-05-12T12:22:08.087+00:00|962072682626|31.211.182.228|Safari|About My Aim Is True, itchfork which reported the album to be held by many as the most|86
+2012-11-26T07:56:10.386+00:00|1168231112925|31.15.21.64|Firefox|About What Becomes of the Brokenhearted, erspoon and Riser and lyricist Dean|77
+2012-11-04T22:40:38.924+00:00|1099511636500|203.81.88.222|Firefox|About Dusty Springfield, eft many female pop singers About Garth Brooks, ich includ|83
+2011-06-09T13:32:06.568+00:00|549755822668|31.211.182.228|Safari|About Andrew Jackson, politician and army general who defeatAbout Mickey M|74
+2012-09-05T12:55:42.494+00:00|1030792160930|27.20.108.250|Firefox|About Kingdom of Kongo,  in west central Africa in what is now northern Angola, Cabinda,|89
+2012-07-26T23:11:55.348+00:00|1030792161497|46.31.114.181|Chrome|About The Inspiration, ed in World War II, and we only have black and white reproductio|87
+2012-02-06T12:24:15.113+00:00|824633731307|41.153.161.111|Internet Explorer|About Charles Darwin, km southeast of Darwin. It is notable for its World War II–era concrete bunkers, one of which has been converted into a visitors centre and|162
+2012-05-13T23:57:06.045+00:00|962072685659|1.186.69.247|Safari|About Aristotle, dy today. Though Aristotle wrote many elegant treatises and d|78
+2012-10-04T07:29:16.641+00:00|1099511639173|27.109.114.212|Chrome|Cliff Richards (born 1964, Belo Horizonte, Brazil) is a comic book artist.About Feel Good Time, al was later posted on Orbit's website. Feel Good Time was nominated for the 20|175
+2012-10-04T19:55:43.971+00:00|1099511639297|31.40.10.147|Chrome|About Maria Carolina of Austria, vourite, John Acton, 6tAbout Elton John,  assumed by many|90
+2012-11-17T18:57:16.553+00:00|1168231116166|202.58.96.247|Chrome|About Brigham Young, rough a desert, to what they saw as a promisedAbout Armenia, history.|90
+2012-11-18T07:07:55.070+00:00|1168231116518|84.54.139.46|Opera|About Paula Abdul, or Best Music ViAbout What a Wonderful World, orld (Thie|75
+2012-11-24T11:12:45.362+00:00|1168231116585|1.88.26.152|Firefox|About Charles Darwin, has lookouts towardsAbout Paula Abdul, er initial perio|77
+2012-02-20T03:43:22.748+00:00|824633733127|91.191.192.127|Firefox|About Carl Linnaeus, . Many ofAbout Cole Porter, omposer aAbout Paula Abdu|74
+2012-06-05T00:39:06.101+00:00|962072687205|1.74.38.36|Chrome|About Aaron Copland,  works are archetypical of what many peAbout Clark Gabl|76
+2012-09-18T11:26:05.285+00:00|1099511640827|124.217.53.142|Firefox|About Elizabeth I of England, nd conquer England in 1588, the defeat of the Spanish Armada associated her with what iAbout The Great Pretender,  one position on both the R&B|173
+2012-11-19T06:19:09.308+00:00|1168231117827|31.118.204.199|Chrome|About Rush Limbaugh, ks and on his show, what he regards as liberal policies and poli|85
+2012-10-18T08:22:23.796+00:00|1099511641105|111.68.113.46|Firefox|About Only Built 4 Cuban Linx..., lt 4 Cuban Linx... is classified by many tAbout|82
+2011-11-29T10:34:12.192+00:00|755914257790|31.207.73.51|Internet Explorer|About Mobutu Sese Seko, o purge the country of all colonial cultuAbout What I Go|80
+2012-07-31T04:38:43.017+00:00|1030792164752|41.209.166.97|Safari|About Constantine the Great, tling parts of Dacia which had been abandoned|74
+2012-06-24T00:27:20.456+00:00|962072688269|202.0.110.39|Chrome|About Alejandro Falla, jandro Falla RamirAbout Alfred Hitchcock,  many of the mysteAbout|88
+2012-10-27T23:20:24.120+00:00|1099511641974|196.28.7.94|Firefox|About How to Save a Life, t was ranked #21 on Billboard'About Benin Empire, ) was a pre|87
+2012-02-25T02:01:09.775+00:00|824633735041|83.141.126.173|Firefox|About Jacques Offenbach,  and many of his operettas About Allen Ginsberg, ing, W|80
+2012-08-27T14:57:52.482+00:00|1030792167527|112.196.252.7|Chrome|About René Descartes,  corporeAbout Augustus, ned forcAbout Elizabeth II,  has reiAbout Sa|90
+2012-11-03T02:41:07.436+00:00|1099511644407|53.96.187.150|Firefox|About Mohammad Reza Pahlavi, tics, Iran had as many as 2,200 politicaAbout Robe|79
+2012-10-07T18:40:54.509+00:00|1099511644435|112.196.252.7|Chrome|About Robert Burns, c chemist of the twentieth century, having made many k|74
+2012-07-17T05:30:31.107+00:00|1030792167774|27.131.223.231|Firefox|About Mohammad Reza Pahlavi, ionalizing many natural resourcAbout Benjamin Disraeli,  Disr|90
+2012-04-17T11:04:16.293+00:00|893353214311|53.25.144.238|Internet Explorer|About Streets of Philadelphia,  in many countries, particularly Canada, France,|79
+2012-06-09T16:26:47.659+00:00|962072691263|80.94.167.126|Firefox|About Pope John Paul II, ps, and ordained many priests. A key goal of his papac|79
+2012-05-25T15:53:19.130+00:00|962072691272|27.34.244.161|Firefox|About Mohammad Reza Pahlavi, ng the nation, nationalizing many natural About Rober|82
+2012-09-27T05:59:29.944+00:00|1099511645848|14.139.2.205|Firefox|About Bryan Adams, d has been nominated for several Golden Globe Awards and thre|80
+2012-10-06T14:55:24.097+00:00|1099511646167|46.29.29.10|Internet Explorer|Have You Never Been Mellow was an album by Olivia Newton-John, released in 1975.About|85
+2012-05-27T04:37:35.388+00:00|962072693521|125.212.106.222|Chrome|About Charlemagne, . It has often been suAbout Genghis Khan,  Weatherford has the aAbout Mick Jagger,  notoriety for admitteAbout Jennifer Lopez,  particularly her highAbout|174
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_hasCreator_Person/part-00000-77bb2680-0143-453b-a57e-237bb2468cf1-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_hasCreator_Person/part-00000-77bb2680-0143-453b-a57e-237bb2468cf1-c000.csv
new file mode 100644
index 000000000..3dba20e22
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_hasCreator_Person/part-00000-77bb2680-0143-453b-a57e-237bb2468cf1-c000.csv
@@ -0,0 +1,36 @@
+creationDate|CommentId|PersonId
+2012-06-09T01:12:54.446+00:00|962072674715|13194139534507
+2012-09-14T09:46:25.139+00:00|1099511628874|17592186045813
+2011-05-02T16:58:17.418+00:00|481036339294|4398046511661
+2011-09-24T12:40:19.833+00:00|687194770827|910
+2012-04-30T20:38:13.495+00:00|893353203618|24189255811441
+2012-07-23T01:16:24.333+00:00|1030792157359|10995116279002
+2012-10-16T02:58:38.711+00:00|1099511634167|24189255812253
+2012-11-12T15:56:05.947+00:00|1168231110927|8796093023077
+2012-02-11T04:21:53.564+00:00|824633727481|21990232556036
+2012-10-16T21:09:33.786+00:00|1099511634603|17592186045408
+2012-11-20T20:19:27.557+00:00|1168231111533|2199023257197
+2012-05-12T12:22:08.087+00:00|962072682626|2199023255851
+2011-06-09T13:32:06.568+00:00|549755822668|2199023255851
+2012-07-26T23:11:55.348+00:00|1030792161497|19791209300150
+2012-02-06T12:24:15.113+00:00|824633731307|24189255812726
+2012-05-13T23:57:06.045+00:00|962072685659|19791209300191
+2012-02-10T11:09:12.368+00:00|824633737550|21990232556059
+2012-04-17T12:00:56.880+00:00|893353214312|21990232556059
+2012-11-10T17:24:42.974+00:00|1168231121319|21990232556059
+2012-06-09T16:26:47.659+00:00|962072691263|21990232556059
+2012-08-31T17:59:03.061+00:00|1030792168186|21990232556059
+2012-06-03T19:40:41.656+00:00|962072691638|21990232556059
+2012-07-03T21:19:37.599+00:00|962072691749|21990232556059
+2012-05-23T07:06:16.703+00:00|962072691762|21990232556059
+2012-10-06T11:18:41.394+00:00|1099511645309|21990232556059
+2011-09-22T21:14:33.539+00:00|687194784946|21990232556059
+2012-09-21T03:02:45.118+00:00|1099511645416|21990232556059
+2012-10-27T07:46:21.297+00:00|1099511645512|21990232556059
+2012-11-28T04:35:02.491+00:00|1168231122448|21990232556059
+2012-09-27T05:59:29.944+00:00|1099511645848|26388279067480
+2012-08-27T04:20:13.143+00:00|1030792169236|21990232556059
+2012-09-25T22:21:08.842+00:00|1099511645979|21990232556059
+2012-09-29T19:33:25.460+00:00|1099511646154|21990232556059
+2011-09-22T20:47:22.207+00:00|687194785747|21990232556059
+2012-10-06T14:55:24.097+00:00|1099511646167|24189255812167
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_hasTag_Tag/part-00000-d5685860-f0ca-4b57-98b1-cc9b688b30c6-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_hasTag_Tag/part-00000-d5685860-f0ca-4b57-98b1-cc9b688b30c6-c000.csv
new file mode 100644
index 000000000..99d587c89
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_hasTag_Tag/part-00000-d5685860-f0ca-4b57-98b1-cc9b688b30c6-c000.csv
@@ -0,0 +1,5 @@
+creationDate|CommentId|TagId
+2012-07-23T01:16:24.333+00:00|1030792157359|2808
+2012-07-23T01:16:24.333+00:00|1030792157359|6938
+2012-07-23T01:16:24.333+00:00|1030792157359|8644
+2012-07-23T01:16:24.333+00:00|1030792157359|15468
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_isLocatedIn_Country/part-00000-86f5e365-c8eb-42b8-9c45-be1136749ebf-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_isLocatedIn_Country/part-00000-86f5e365-c8eb-42b8-9c45-be1136749ebf-c000.csv
new file mode 100644
index 000000000..57492fea9
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_isLocatedIn_Country/part-00000-86f5e365-c8eb-42b8-9c45-be1136749ebf-c000.csv
@@ -0,0 +1,2 @@
+creationDate|CommentId|CountryId
+2012-07-23T01:16:24.333+00:00|1030792157359|101
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_replyOf_Comment/part-00000-fed82766-b5eb-4724-bf11-2cb6b0c498d1-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_replyOf_Comment/part-00000-fed82766-b5eb-4724-bf11-2cb6b0c498d1-c000.csv
new file mode 100644
index 000000000..21adb000e
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_replyOf_Comment/part-00000-fed82766-b5eb-4724-bf11-2cb6b0c498d1-c000.csv
@@ -0,0 +1 @@
+creationDate|Comment1Id|Comment2Id
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_replyOf_Post/part-00000-3217ef34-4a71-4b35-a6c7-40d0ce55e745-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_replyOf_Post/part-00000-3217ef34-4a71-4b35-a6c7-40d0ce55e745-c000.csv
new file mode 100644
index 000000000..e82f9f880
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Comment_replyOf_Post/part-00000-3217ef34-4a71-4b35-a6c7-40d0ce55e745-c000.csv
@@ -0,0 +1,2 @@
+2012-07-23T01:16:24.333+00:00|1030792157359|755914250402
+2012-11-19T06:19:09.308+00:00|1168231117827|274877920256
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum/part-00000-f8e268f3-1ce7-4f7c-a636-2afefbb1a96b-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum/part-00000-f8e268f3-1ce7-4f7c-a636-2afefbb1a96b-c000.csv
new file mode 100644
index 000000000..1d184e28e
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum/part-00000-f8e268f3-1ce7-4f7c-a636-2afefbb1a96b-c000.csv
@@ -0,0 +1,2 @@
+creationDate|id|title
+2010-02-19T12:42:24.255+00:00|220|Wall of Chaim Azriel Hleb
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_containerOf_Post/part-00000-8f8b7c0e-8a61-43d0-b118-d45e51ac8346-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_containerOf_Post/part-00000-8f8b7c0e-8a61-43d0-b118-d45e51ac8346-c000.csv
new file mode 100644
index 000000000..cf6690a88
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_containerOf_Post/part-00000-8f8b7c0e-8a61-43d0-b118-d45e51ac8346-c000.csv
@@ -0,0 +1,8 @@
+creationDate|ForumId|PostId
+2012-06-07T03:58:11.633+00:00|220|962072677731
+2011-12-21T12:05:43.074+00:00|220|755914247530
+2010-07-10T05:04:07.150+00:00|220|206158433649
+2012-11-15T20:30:38.592+00:00|220|1168231107960
+2010-10-30T06:42:32.753+00:00|220|274877910399
+2010-06-02T19:25:53.984+00:00|220|137438956940
+2010-10-30T20:07:17.753+00:00|220|274877910425
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasMember_Person/part-00000-fcbe7eed-213e-4044-82ac-1deb7607d428-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasMember_Person/part-00000-fcbe7eed-213e-4044-82ac-1deb7607d428-c000.csv
new file mode 100644
index 000000000..b5392b4d8
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasMember_Person/part-00000-fcbe7eed-213e-4044-82ac-1deb7607d428-c000.csv
@@ -0,0 +1 @@
+creationDate|ForumId|PersonId
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasModerator_Person/part-00000-ed92dadb-3b80-45de-a6ed-cb51324d9222-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasModerator_Person/part-00000-ed92dadb-3b80-45de-a6ed-cb51324d9222-c000.csv
new file mode 100644
index 000000000..c891274d9
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasModerator_Person/part-00000-ed92dadb-3b80-45de-a6ed-cb51324d9222-c000.csv
@@ -0,0 +1,2 @@
+creationDate|ForumId|PersonId
+2010-02-19T12:42:24.255+00:00|220|166
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasTag_Tag/part-00000-a90294ce-d86a-4f6a-b660-9367cc6530b9-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasTag_Tag/part-00000-a90294ce-d86a-4f6a-b660-9367cc6530b9-c000.csv
new file mode 100644
index 000000000..cde406baa
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Forum_hasTag_Tag/part-00000-a90294ce-d86a-4f6a-b660-9367cc6530b9-c000.csv
@@ -0,0 +1 @@
+creationDate|ForumId|TagId
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Organisation/part-00000-4b9ded23-dbc4-4af1-99cd-2546b86e2a1e-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Organisation/part-00000-4b9ded23-dbc4-4af1-99cd-2546b86e2a1e-c000.csv
new file mode 100644
index 000000000..eda12660e
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Organisation/part-00000-4b9ded23-dbc4-4af1-99cd-2546b86e2a1e-c000.csv
@@ -0,0 +1 @@
+id|type|name|url
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Organisation_isLocatedIn_Place/part-00000-d96c104a-09e8-4c00-8480-c5ff5bd0774e-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Organisation_isLocatedIn_Place/part-00000-d96c104a-09e8-4c00-8480-c5ff5bd0774e-c000.csv
new file mode 100644
index 000000000..51a7b9c80
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Organisation_isLocatedIn_Place/part-00000-d96c104a-09e8-4c00-8480-c5ff5bd0774e-c000.csv
@@ -0,0 +1 @@
+OrganisationId|PlaceId
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person/part-00000-8e928ee8-4c50-4b3a-a039-7df49c43271c-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person/part-00000-8e928ee8-4c50-4b3a-a039-7df49c43271c-c000.csv
new file mode 100644
index 000000000..1387fba02
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person/part-00000-8e928ee8-4c50-4b3a-a039-7df49c43271c-c000.csv
@@ -0,0 +1,3 @@
+creationDate|id|firstName|lastName|gender|birthday|locationIP|browserUsed|language|email
+2010-02-19T12:42:14.255+00:00|166|Chaim Azriel|Hleb|male|1985-10-01|178.238.2.172|Firefox|ru;pl;en|Chaim.Azriel166@yahoo.com;Chaim.Azriel166@gmail.com;Chaim.Azriel166@gmx.com;Chaim.Azriel166@hotmail.com;Chaim.Azriel166@theblackmarket.com
+2011-09-18T02:40:31.062+00:00|21990232556059|Chaim Azriel|Epstein|male|1981-07-17|80.94.167.126|Firefox|ru;pl;en|Chaim.Azriel21990232556059@gmx.com;Chaim.Azriel21990232556059@gmail.com;Chaim.Azriel21990232556059@hotmail.com;Chaim.Azriel21990232556059@yahoo.com;Chaim.Azriel21990232556059@zoho.com
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_hasInterest_Tag/part-00000-8119e7ba-eef1-4531-a329-fe69aae3a842-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_hasInterest_Tag/part-00000-8119e7ba-eef1-4531-a329-fe69aae3a842-c000.csv
new file mode 100644
index 000000000..844b52d89
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_hasInterest_Tag/part-00000-8119e7ba-eef1-4531-a329-fe69aae3a842-c000.csv
@@ -0,0 +1 @@
+creationDate|PersonId|TagId
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_isLocatedIn_City/part-00000-cc303aad-ca12-4d62-a0fa-f666cd4bd0a8-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_isLocatedIn_City/part-00000-cc303aad-ca12-4d62-a0fa-f666cd4bd0a8-c000.csv
new file mode 100644
index 000000000..1e624f2ab
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_isLocatedIn_City/part-00000-cc303aad-ca12-4d62-a0fa-f666cd4bd0a8-c000.csv
@@ -0,0 +1 @@
+creationDate|PersonId|CityId
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_knows_Person/part-00000-bbdf70c1-9235-4ae5-a5bd-315c602b7aa7-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_knows_Person/part-00000-bbdf70c1-9235-4ae5-a5bd-315c602b7aa7-c000.csv
new file mode 100644
index 000000000..189f6cd98
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_knows_Person/part-00000-bbdf70c1-9235-4ae5-a5bd-315c602b7aa7-c000.csv
@@ -0,0 +1 @@
+creationDate|Person1Id|Person2Id
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_likes_Comment/part-00000-15c95f3c-1bb2-437a-88da-44454947912b-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_likes_Comment/part-00000-15c95f3c-1bb2-437a-88da-44454947912b-c000.csv
new file mode 100644
index 000000000..368764692
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_likes_Comment/part-00000-15c95f3c-1bb2-437a-88da-44454947912b-c000.csv
@@ -0,0 +1,16 @@
+creationDate|PersonId|CommentId
+2012-02-16T22:28:48.778+00:00|1425|824633727481
+2012-02-11T08:18:43.169+00:00|15393162789718|824633727481
+2012-02-13T20:27:31.805+00:00|17592186045041|824633727481
+2012-02-15T15:52:38.691+00:00|17592186045813|824633727481
+2012-05-30T08:21:40.984+00:00|21990232556059|962072691272
+2012-03-25T08:45:56.091+00:00|21990232556059|893353214787
+2012-09-28T08:24:35.533+00:00|21990232556059|1099511645075
+2012-11-25T17:43:45.507+00:00|21990232556059|1168231121995
+2012-11-26T10:28:56.275+00:00|21990232556059|1168231122116
+2012-09-30T18:04:55.826+00:00|21990232556059|1099511645855
+2012-10-05T13:35:56.365+00:00|21990232556059|1099511646152
+2012-11-02T07:46:28.808+00:00|166|1099511648359
+2012-03-16T10:19:13.490+00:00|166|893353218272
+2012-04-30T11:33:41.987+00:00|166|893353218392
+2012-08-11T23:32:50.614+00:00|166|1030792200386
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_likes_Post/part-00000-80467545-319b-45b9-9df7-5bf613102255-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_likes_Post/part-00000-80467545-319b-45b9-9df7-5bf613102255-c000.csv
new file mode 100644
index 000000000..c00f54a9e
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_likes_Post/part-00000-80467545-319b-45b9-9df7-5bf613102255-c000.csv
@@ -0,0 +1,2 @@
+creationDate|PersonId|PostId
+2012-10-23T01:52:26.828+00:00|21990232556059|1099511644452
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_studyAt_University/part-00000-773b544a-a4e8-4669-9d72-6f9563e37e0a-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_studyAt_University/part-00000-773b544a-a4e8-4669-9d72-6f9563e37e0a-c000.csv
new file mode 100644
index 000000000..2b51bfd3f
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_studyAt_University/part-00000-773b544a-a4e8-4669-9d72-6f9563e37e0a-c000.csv
@@ -0,0 +1 @@
+creationDate|PersonId|UniversityId|classYear
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_workAt_Company/part-00000-8955972b-aaaf-431b-af04-bb8b8371303a-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_workAt_Company/part-00000-8955972b-aaaf-431b-af04-bb8b8371303a-c000.csv
new file mode 100644
index 000000000..034a8ae0e
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Person_workAt_Company/part-00000-8955972b-aaaf-431b-af04-bb8b8371303a-c000.csv
@@ -0,0 +1 @@
+creationDate|PersonId|CompanyId|workFrom
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Place/part-00000-e23c300a-6036-4119-afaf-d4a2e45a602c-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Place/part-00000-e23c300a-6036-4119-afaf-d4a2e45a602c-c000.csv
new file mode 100644
index 000000000..1420b4449
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Place/part-00000-e23c300a-6036-4119-afaf-d4a2e45a602c-c000.csv
@@ -0,0 +1 @@
+id|name|url|type
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Place_isPartOf_Place/part-00000-773c5c1f-ce07-41a9-ab10-836b6a201aab-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Place_isPartOf_Place/part-00000-773c5c1f-ce07-41a9-ab10-836b6a201aab-c000.csv
new file mode 100644
index 000000000..1173c3d97
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Place_isPartOf_Place/part-00000-773c5c1f-ce07-41a9-ab10-836b6a201aab-c000.csv
@@ -0,0 +1 @@
+Place1Id|Place2Id
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Post/part-00000-ab6f4085-f12a-4818-a371-e07cbb2f8fe8-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post/part-00000-ab6f4085-f12a-4818-a371-e07cbb2f8fe8-c000.csv
new file mode 100644
index 000000000..684e38339
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post/part-00000-ab6f4085-f12a-4818-a371-e07cbb2f8fe8-c000.csv
@@ -0,0 +1,20 @@
+creationDate|id|imageFile|locationIP|browserUsed|language|content|length
+2012-07-20T18:17:53.401+00:00|1030792151482||31.182.127.125|Internet Explorer|pl|About Shania Twain, ased in November 2002. To date it has sold 20 million copies worldwide. Twain has won five Gra|114
+2011-02-15T21:56:41.273+00:00|412316860930||31.182.127.125|Internet Explorer|pl|About Robert Fripp, een the only member to have played in alAbout One Hot Minute, s than half as many copies as Blood|118
+2010-06-08T07:13:09.659+00:00|137438954237||196.29.42.107|Firefox|ar|About Fidel Castro, iet Union and allowed them to place nuclear weapons onAbout Nikita Khrushchev, shed in|107
+2012-02-16T04:35:39.640+00:00|824633721727||196.29.42.107|Firefox|ar|About Fidel Castro,  alliance with the Soviet Union and allowed them to place nuclear weapons on the i|102
+2011-06-15T06:45:05.095+00:00|549755816877||190.5.24.199|Chrome|en|About David Hockney, gner and phAbout Miley Cyrus, h Montana. About You Get What You Give, rs UnleasheAbo|105
+2012-11-15T20:30:38.592+00:00|1168231107960||178.238.2.172|Firefox|pl|About Louis XIV of France, y, many members of which had parAbout Edward IV of England, rcame|93
+2012-03-26T12:40:47.018+00:00|893353201396||27.54.75.46|Firefox|en|About Lachlan Macquarie, onsidered by some historians to have had a crucial influence on the transition of New South Wales from a penal colony to a free settlement and therefore to have played|193
+2012-04-21T11:28:28.597+00:00|893353202439||31.31.209.55|Internet Explorer|de|About John Rhys-Davies, logy. He also played Agent Michael Malone in the 1993 remakAbout How Am I Supposed to Live Without You,  1993 for Over My Heart. Though Branigan 2 wen|174
+2011-12-27T00:37:34.741+00:00|755914249344||27.96.85.34|Firefox|en|About Humayun, umayun was the second Mughal Emperor who ruled present day AAbout James Cameron, rts have grossed approx|119
+2011-06-15T11:21:05.095+00:00|549755819919||61.28.131.62|Firefox|tl|About Maurice Ravel,  any other French comAbout David Hockney,  one of the most inflAbout William How|101
+2012-07-21T22:31:29.679+00:00|1030792159194||1.2.1.48|Firefox|zh|About Dusty Springfield, harts in collaboration with the Pet Shop Boys on the songs What Have I Done to Deserve Thi|115
+2012-06-27T18:11:41.913+00:00|962072682488||203.144.56.205|Internet Explorer|zh|About Dusty Springfield, charts in collaboration with the Pet Shop Boys on the songs What Have I Done to Deserve T|114
+2012-10-10T04:59:18.836+00:00|1099511636145||41.214.181.193|Internet Explorer|zh|About Dusty Springfield,  (1964), I Just Don't Know What to Do with Myself (1964), You Don't Have to Say Y|106
+2012-10-22T21:27:52.640+00:00|1099511636200||31.211.182.228|Safari|zh|About Dusty Springfield, et Shop Boys on the songs What Have I Done to Deserve This?, Noth|90
+2012-11-20T03:41:37.409+00:00|1168231113797||202.69.11.241|Internet Explorer|zh|About Louis Philippe I, rom 1830 to 1848 in what was known as the July Monarchy. His father|91
+2010-05-27T03:41:21.013+00:00|137438965532||202.8.75.0|Firefox|fr|About Paula Abdul, ul moved to the first seAbout Isaac Asimov, s works have been publisAbout G|94
+2010-12-07T10:22:02.762+00:00|343597397902||24.31.187.242|Chrome|es|About Jacques Offenbach, ith Offenbach's facility for melody, made them internationally known, and translated versio|116
+2010-10-20T08:04:25.776+00:00|274877921325||24.31.187.242|Chrome|es|About Jacques Offenbach,  his own small-scale pieces, many of which becamAbout Roger Federer, d|95
+2012-07-02T22:16:08.046+00:00|962072691735||1.4.5.168|Firefox|gu|About Mohammad Reza Pahlavi, According to official statistics, Iran had as many as 2,200 political prisoners in 1978, a number which|132
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_hasCreator_Person/part-00000-7457dc74-44d7-4ee0-8201-9940057bf0e8-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_hasCreator_Person/part-00000-7457dc74-44d7-4ee0-8201-9940057bf0e8-c000.csv
new file mode 100644
index 000000000..6ac670927
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_hasCreator_Person/part-00000-7457dc74-44d7-4ee0-8201-9940057bf0e8-c000.csv
@@ -0,0 +1,13 @@
+creationDate|PostId|PersonId
+2012-07-20T18:17:53.401+00:00|1030792151482|27
+2011-12-21T12:05:43.074+00:00|755914247530|166
+2010-07-10T05:04:07.150+00:00|206158433649|166
+2012-11-15T20:30:38.592+00:00|1168231107960|166
+2010-10-30T06:42:32.753+00:00|274877910399|166
+2010-06-02T19:25:53.984+00:00|137438956940|166
+2010-10-30T20:07:17.753+00:00|274877910425|166
+2012-04-21T11:28:28.597+00:00|893353202439|460
+2011-06-15T11:21:05.095+00:00|549755819919|529
+2012-10-16T09:44:45.548+00:00|1099511644342|21990232556059
+2012-11-20T04:28:21.628+00:00|1168231121079|21990232556059
+2012-02-18T09:38:41.694+00:00|824633737400|21990232556059
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_hasTag_Tag/part-00000-76abe36a-60da-4e94-82fa-326be3dd1915-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_hasTag_Tag/part-00000-76abe36a-60da-4e94-82fa-326be3dd1915-c000.csv
new file mode 100644
index 000000000..cfa3f0e8b
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_hasTag_Tag/part-00000-76abe36a-60da-4e94-82fa-326be3dd1915-c000.csv
@@ -0,0 +1,8 @@
+creationDate|PostId|TagId
+2012-07-20T18:17:53.401+00:00|1030792151482|291
+2012-04-21T11:28:28.597+00:00|893353202439|11718
+2011-06-15T11:21:05.095+00:00|549755819919|572
+2011-06-15T11:21:05.095+00:00|549755819919|2423
+2011-06-15T11:21:05.095+00:00|549755819919|2857
+2011-06-15T11:21:05.095+00:00|549755819919|5927
+2011-06-15T11:21:05.095+00:00|549755819919|9307
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_isLocatedIn_Country/part-00000-514b3315-27ef-4bf2-b6c8-85454d8c50d1-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_isLocatedIn_Country/part-00000-514b3315-27ef-4bf2-b6c8-85454d8c50d1-c000.csv
new file mode 100644
index 000000000..7b9b99c20
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Post_isLocatedIn_Country/part-00000-514b3315-27ef-4bf2-b6c8-85454d8c50d1-c000.csv
@@ -0,0 +1,3 @@
+creationDate|PostId|CountryId
+2012-07-20T18:17:53.401+00:00|1030792151482|92
+2011-06-15T11:21:05.095+00:00|549755819919|55
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Tag/part-00000-552a5973-be8c-4a64-8495-12475edb9268-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Tag/part-00000-552a5973-be8c-4a64-8495-12475edb9268-c000.csv
new file mode 100644
index 000000000..32568070e
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Tag/part-00000-552a5973-be8c-4a64-8495-12475edb9268-c000.csv
@@ -0,0 +1 @@
+id|name|url
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/TagClass/part-00000-a7819ae9-3a8a-4b0d-bda9-42afd23b05b7-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/TagClass/part-00000-a7819ae9-3a8a-4b0d-bda9-42afd23b05b7-c000.csv
new file mode 100644
index 000000000..32568070e
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/TagClass/part-00000-a7819ae9-3a8a-4b0d-bda9-42afd23b05b7-c000.csv
@@ -0,0 +1 @@
+id|name|url
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/TagClass_isSubclassOf_TagClass/part-00000-59a40ae1-065f-497c-a4f0-5630f603c3cd-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/TagClass_isSubclassOf_TagClass/part-00000-59a40ae1-065f-497c-a4f0-5630f603c3cd-c000.csv
new file mode 100644
index 000000000..cc628c791
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/TagClass_isSubclassOf_TagClass/part-00000-59a40ae1-065f-497c-a4f0-5630f603c3cd-c000.csv
@@ -0,0 +1 @@
+TagClass1Id|TagClass2Id
diff --git a/geaflow-ai/src/test/resources/graph_ldbc_sf/Tag_hasType_TagClass/part-00000-cc5fb343-f815-4288-b7c0-8251d3d39696-c000.csv b/geaflow-ai/src/test/resources/graph_ldbc_sf/Tag_hasType_TagClass/part-00000-cc5fb343-f815-4288-b7c0-8251d3d39696-c000.csv
new file mode 100644
index 000000000..39d43202c
--- /dev/null
+++ b/geaflow-ai/src/test/resources/graph_ldbc_sf/Tag_hasType_TagClass/part-00000-cc5fb343-f815-4288-b7c0-8251d3d39696-c000.csv
@@ -0,0 +1 @@
+TagId|TagClassId
diff --git a/geaflow-ai/src/test/resources/index/LDBCEmbeddingIndexStore b/geaflow-ai/src/test/resources/index/LDBCEmbeddingIndexStore
new file mode 100644
index 000000000..3398d1234
--- /dev/null
+++ b/geaflow-ai/src/test/resources/index/LDBCEmbeddingIndexStore
@@ -0,0 +1,362 @@
+{"input":"VComment481036339294Comment","embedding":[0.010965966,0.0149804475,-0.019568427,0.015837798,-0.0013540911,0.117248364,-0.038603906,-0.033158578,-0.027782764,-0.005682838,-0.016811006,0.027551048,0.03505865,0.021456914,0.021387398,0.015061549,0.0030383777,0.042612597,-0.0030702387,-0.0015235336,0.044188265,0.012188269,-0.093474284,0.0015944967,0.035661113,0.009981172,-0.05904127,-0.009187545,0.019197682,-0.033135407,-0.03288052,0.010496741,0.023368571,0.01243157,0.015837798,0.02 [...]
+{"input":"VComment481036339294Comment","embedding":[0.017355971,0.03818751,-0.046340883,-0.04354294,-0.0031394854,0.053292014,-0.036919694,-0.042253267,0.0024181416,-0.018875167,-0.02195727,0.006257112,0.03873398,0.03672296,0.047696136,0.0072844806,0.03759732,-0.015650976,-5.451065E-4,-0.019618368,0.018241258,-0.0027624194,-0.016503474,-0.013366722,-0.0130934855,-0.066713385,-0.049226258,-0.01936699,0.016350463,0.017257607,-0.007257157,0.05416637,-0.032744642,0.08061565,-0.038209368,-0.0 [...]
+{"input":"VComment481036339294Comment","embedding":[1.8313472E-4,0.012494567,-0.01615997,-0.033954512,0.03378115,0.018178418,-0.020258782,-0.009219232,0.020295931,-0.023602225,-0.0063711144,-0.007671342,0.02314405,0.015602729,-0.013906242,0.012420268,0.06592772,-0.006996462,0.019107152,-0.035737682,0.021620926,0.0070336116,-0.036233004,0.008841547,-0.032295175,0.032394238,-0.008148092,0.02235153,0.0633025,0.020816023,0.023478393,0.003078753,-0.010736164,-0.0026747535,-0.04443063,0.035985 [...]
+{"input":"VComment481036339294Comment","embedding":[0.03965913,0.023799889,-0.06317227,-0.031939056,-0.021064777,0.059157833,-0.009925812,0.008365253,-0.040453196,0.037629854,0.016818736,0.038622435,0.055363968,0.0233808,-0.021880899,0.040387023,0.014723287,0.033769816,0.0041440264,-0.07375981,-0.024924815,0.049981974,0.0062918616,-0.020899348,-0.0038931237,-0.014965918,-0.0035870778,-0.027880501,-0.016642276,-0.066922024,0.012462407,0.074333295,-0.002109235,0.05311412,-0.054834593,0.048 [...]
+{"input":"VComment687194770827Comment","embedding":[0.029334351,0.0051838905,0.007482435,0.052760616,0.006589352,0.029563349,-0.030090038,0.0026449007,-0.0692941,0.049646273,-0.021559948,-0.04353209,0.024754439,0.00934875,0.0071103172,-1.1583963E-4,-3.9108176E-4,0.030135836,-0.0032231149,-0.019018095,0.046165537,-0.016212897,-0.07130927,-0.009967038,-0.0024788787,-0.012068074,-0.0030685426,0.021090506,-0.034532554,0.0120909745,-0.021479798,-0.0014376638,-0.0051552663,0.0070988676,0.00740 [...]
+{"input":"VComment687194770827Comment","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062,0 [...]
+{"input":"VComment687194770827Comment","embedding":[-0.015907958,0.015303692,-0.009786481,0.0065845284,0.05078461,0.046502203,-0.025208399,-0.0028833994,0.029477669,0.0069884667,0.014042615,-0.0068505364,0.028820857,0.04700138,0.0058357636,0.049628623,0.069937214,0.005550051,0.029031036,-0.07992074,0.034285523,0.0038587635,-0.037884846,-0.0250639,-8.107508E-4,0.024223182,-0.051782962,0.026246158,0.043402057,0.019494144,0.0024925969,0.024840584,-0.05154651,-0.024696086,-0.037254307,0.0295 [...]
+{"input":"VComment687194770827Comment","embedding":[0.06494334,0.0069910223,-0.0714804,0.04176455,-0.017934188,-0.004443492,0.0061578676,-0.034778867,-0.03755605,-0.0038346478,0.04073913,0.023841042,0.019920943,0.058491733,-6.088438E-4,0.05396279,0.07801746,-0.04815207,0.032706663,-0.025550077,-0.013501379,0.028070904,-0.019707313,-0.02375559,0.018094411,-0.0035702814,0.023178792,0.007850881,-0.002892008,-5.934892E-4,0.024781011,0.035013862,-0.008598584,0.021918377,-0.012956624,0.0488784 [...]
+{"input":"EComment962072674715Comment_hasCreator_PersonPerson13194139534507","embedding":[0.0506999,0.042249918,0.0036288628,0.0017435326,-0.01004159,0.07148918,-0.009266044,-0.021807903,-0.015429902,0.029331861,3.6118616E-4,-0.018914074,0.011355389,0.014260794,-0.022016259,-0.009156078,-0.0361613,0.050190587,-0.0040803,-0.008907209,0.0686185,-0.011777888,-0.07931409,-0.018694142,0.025535157,-0.005237832,-0.021124959,-0.018173253,-0.011193334,9.882429E-4,-0.04671799,-0.0032063636,-0.0078 [...]
+{"input":"VComment1168231108471Comment","embedding":[0.022960152,0.031413145,-0.018916424,-0.011719959,0.044778008,0.12821132,-0.028214715,-0.011377269,-0.03008808,0.017157288,-0.014827004,-0.026889652,0.026364194,0.019464726,-0.032121368,0.023691222,-0.013319173,0.053139616,0.007093659,-0.029836776,0.040026058,-0.002947124,-0.06926884,-0.012553834,0.036119405,-0.004420686,-0.051403325,0.0153867295,0.0058199987,-0.034588728,-0.027437953,-0.008155994,0.024696443,0.012862255,-0.012965062,0 [...]
+{"input":"VComment1168231108471Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1168231108471Comment","embedding":[0.020180121,-0.050355114,-0.055542927,0.0015483126,0.0150042055,0.04728526,-0.02948487,0.035838753,-0.008703867,-0.024118576,-0.021358088,0.0057589496,0.019870756,0.0073533696,-0.009489179,0.053448763,0.021132013,0.01885937,-0.024106678,-0.02958006,0.039527338,0.03593394,-0.017479125,0.011559545,-0.009959175,0.019894553,0.027747666,0.005116422,-0.011934352,0.008816904,0.00588686,-0.033006873,-0.01753862,-0.0038968099,-0.047451843,0.050 [...]
+{"input":"EComment1030792157359Comment_hasTag_TagTag2808","embedding":[0.005128461,0.021982396,0.0027492335,0.010451963,-0.007629589,0.08003611,-0.024391739,-0.012356493,-0.045525126,0.031963963,-0.026020914,-0.036415514,0.02629627,0.016429432,-0.033088323,0.019882824,-0.002248721,0.04855402,-0.034327414,-0.01945832,0.06553415,-0.0016951456,-0.07686955,0.024185224,8.626312E-4,0.024758877,-0.038297094,0.024460578,-0.003978286,-0.008644955,-0.042748645,0.01376768,0.016578581,0.05452001,0.0 [...]
+{"input":"EComment481036339294Comment_hasCreator_PersonPerson4398046511661","embedding":[0.010965966,0.0149804475,-0.019568427,0.015837798,-0.0013540911,0.117248364,-0.038603906,-0.033158578,-0.027782764,-0.005682838,-0.016811006,0.027551048,0.03505865,0.021456914,0.021387398,0.015061549,0.0030383777,0.042612597,-0.0030702387,-0.0015235336,0.044188265,0.012188269,-0.093474284,0.0015944967,0.035661113,0.009981172,-0.05904127,-0.009187545,0.019197682,-0.033135407,-0.03288052,0.010496741,0. [...]
+{"input":"EComment1030792157359Comment_hasTag_TagTag6938","embedding":[0.005128461,0.021982396,0.0027492335,0.010451963,-0.007629589,0.08003611,-0.024391739,-0.012356493,-0.045525126,0.031963963,-0.026020914,-0.036415514,0.02629627,0.016429432,-0.033088323,0.019882824,-0.002248721,0.04855402,-0.034327414,-0.01945832,0.06553415,-0.0016951456,-0.07686955,0.024185224,8.626312E-4,0.024758877,-0.038297094,0.024460578,-0.003978286,-0.008644955,-0.042748645,0.01376768,0.016578581,0.05452001,0.0 [...]
+{"input":"VComment893353203618Comment","embedding":[0.03722477,0.035859782,0.008831917,0.010301012,0.037085958,0.07579139,-0.03861289,-0.014945433,-0.062095262,0.03199618,-0.01952623,0.004517176,0.035998594,0.041204046,-0.018901575,0.019144498,-0.042106327,0.025009308,-0.0057780524,-0.005815647,0.047890164,0.011313183,-0.063714735,-0.0057317815,0.023251021,-0.019803856,-0.04890812,0.0015124731,0.016356688,-0.016460797,-0.034703016,-0.021781927,0.028826639,0.043540716,-0.012134488,0.02561 [...]
+{"input":"VComment893353203618Comment","embedding":[-0.04383671,-0.014797563,-0.06864187,-0.029081915,-0.02968066,0.016989399,-0.06278272,-0.019138467,0.008291554,-0.033123445,-0.011397544,0.024548559,5.2223157E-4,8.967815E-4,0.03474861,0.038597688,0.032930993,-0.042147394,0.015909519,-0.02563913,0.023842894,0.017128393,-0.039880715,-0.008040294,-0.014348504,-0.054271985,-0.06047328,-0.013407618,-0.011942831,-0.024291953,-0.01927746,0.044478223,-0.019459223,0.045675714,0.004557414,-0.002 [...]
+{"input":"VComment893353203618Comment","embedding":[0.0039460137,0.019121327,-0.018626915,0.018849399,0.007354356,0.012057436,-0.03628973,-0.010462962,0.03250749,0.04583185,-0.023842946,-0.006402616,0.048130862,0.01224902,0.0134232445,0.05893373,0.029442145,0.0050059063,-0.0038749422,-0.03154339,0.028156677,0.017156044,-0.012607467,0.027489223,-0.028379163,0.049984902,0.014288463,0.021482136,0.012613648,-0.02640152,-0.009628644,0.037056066,-0.02635208,-0.007298735,-0.028527485,0.04076414 [...]
+{"input":"EComment1030792157359Comment_hasTag_TagTag8644","embedding":[0.005128461,0.021982396,0.0027492335,0.010451963,-0.007629589,0.08003611,-0.024391739,-0.012356493,-0.045525126,0.031963963,-0.026020914,-0.036415514,0.02629627,0.016429432,-0.033088323,0.019882824,-0.002248721,0.04855402,-0.034327414,-0.01945832,0.06553415,-0.0016951456,-0.07686955,0.024185224,8.626312E-4,0.024758877,-0.038297094,0.024460578,-0.003978286,-0.008644955,-0.042748645,0.01376768,0.016578581,0.05452001,0.0 [...]
+{"input":"VComment1030792156402Comment","embedding":[0.007416196,0.0423814,0.0048317644,0.015632663,0.024665842,0.057619404,-0.030410241,-0.020160215,-0.059066467,0.04762152,0.012617948,-0.029555159,0.013264742,0.026003279,-0.03461988,0.031440727,-0.0113353245,0.069459006,0.00460155,-1.853364E-4,0.041526314,-0.05468143,-0.08875318,-0.022539098,0.024556216,-0.016937211,-0.056742396,0.011521689,0.0010688531,0.0070599117,-0.052488912,0.0038451306,-0.016652184,0.019962888,-0.011883454,0.0411 [...]
+{"input":"VComment1030792156402Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1030792156402Comment","embedding":[-0.005627659,0.03408198,-0.017867515,-0.041812416,0.00185968,0.047598086,-0.023057602,0.012701737,0.031651028,0.03512729,-0.0068188272,-0.06325343,0.03721791,0.03140793,0.07467892,0.08518064,0.031772573,-0.0036859345,-0.0070497678,-0.034568172,0.02987643,0.020881899,0.006265785,-0.015825514,-0.010447026,0.052071042,0.016992372,0.028952667,0.06247553,-0.025038831,0.0019402055,-5.873224E-5,0.0090856915,-0.048351683,-0.008271323,0.0473793 [...]
+{"input":"VComment549755817022Comment","embedding":[-0.0015842164,0.011886724,0.0012949184,-0.011262948,-0.019750968,0.061048444,-0.020870266,2.8656537E-4,-0.050135277,0.041833807,-0.007240467,-0.007327912,0.07079567,0.012568797,-0.017080972,0.023901701,-0.008039134,-5.1993487E-4,5.476259E-4,0.010656661,0.023155501,-0.017057654,-0.04052796,0.008126578,0.03381216,-0.030850684,-0.03057086,0.050088637,-0.012487181,0.013559843,-0.041670576,-0.02264249,0.04826978,0.036703687,-0.0076485444,0.0 [...]
+{"input":"VComment549755817022Comment","embedding":[0.017355971,0.03818751,-0.046340883,-0.04354294,-0.0031394854,0.053292014,-0.036919694,-0.042253267,0.0024181416,-0.018875167,-0.02195727,0.006257112,0.03873398,0.03672296,0.047696136,0.0072844806,0.03759732,-0.015650976,-5.451065E-4,-0.019618368,0.018241258,-0.0027624194,-0.016503474,-0.013366722,-0.0130934855,-0.066713385,-0.049226258,-0.01936699,0.016350463,0.017257607,-0.007257157,0.05416637,-0.032744642,0.08061565,-0.038209368,-0.0 [...]
+{"input":"VComment549755817022Comment","embedding":[-0.009516873,0.020495048,-0.026082372,-0.01798996,0.024522834,0.042267196,-0.026180612,0.019967014,-0.005495227,0.0050777122,-0.013078026,-0.026892843,0.060613275,0.027482275,-0.0046325685,0.073335186,0.026917402,-0.013311342,-0.006477614,-0.041898802,0.012783309,0.0051483214,-0.021956347,0.029496167,-0.016123425,0.05845202,-0.0071468647,0.029496167,0.026082372,-0.0119974,-0.007988034,0.0019448191,-0.0043378524,-0.032590687,-0.002033847 [...]
+{"input":"EForum220Forum_containerOf_PostPost274877910399","embedding":[0.02336404,0.0014098255,0.024704972,0.039750688,-0.0019375335,0.019988982,-0.015193444,-0.0074830838,-0.060001034,0.030432343,0.004815424,0.008971746,-0.0048040603,0.020136712,-0.048955392,-0.0018054289,-0.02167083,0.06445566,-0.011897933,-0.013341139,0.057773724,-0.038773395,-0.06700116,-0.027886845,0.0028622653,-0.01805713,-0.039773412,0.00931266,0.0073467176,-0.021534463,-0.039500684,-0.00993199,-0.016863927,0.027 [...]
+{"input":"VForum220Forum","embedding":[0.04297795,-0.01842725,-0.009384354,0.022991382,0.015627312,0.055179317,-0.011950966,-0.023742586,-0.06287346,0.022593016,-0.016264696,0.035579734,0.006709614,0.0087128235,0.010511159,0.018984962,-0.011029034,0.03592119,-0.019918276,-0.0013259881,0.045755126,-0.005434844,-0.09000785,-0.011108708,0.034737475,0.03562526,-0.023378367,0.024562081,0.016389897,-0.03264321,-0.019383328,-0.008308766,0.00674945,0.021124756,0.012611114,0.02340113,-0.007694145 [...]
+{"input":"VForum220Forum","embedding":[-0.009368204,0.010730749,-0.03568624,0.039055854,0.06372866,0.03767635,-0.018487643,-0.0017441707,-0.008751949,-0.015321564,-0.017956195,0.018171037,0.013546298,-0.018363262,0.044415575,-0.0030530053,0.014925804,0.009249476,-0.019143475,-0.027861502,-0.016542766,0.022535702,-0.01741344,-0.043443136,-0.02149542,0.09344458,0.022580933,0.025192948,0.0397343,-0.0305979,-0.023722982,-0.0047434657,-0.022230402,-0.031321574,-0.03116327,7.830394E-4,0.037812 [...]
+{"input":"EForum220Forum_containerOf_PostPost137438956940","embedding":[0.015841354,0.0039043515,-0.0389669,0.011403653,0.02512929,0.05511471,-0.027368767,-0.044129483,-0.03889618,0.013790464,-0.009146496,-0.002208537,0.014780548,0.040970642,0.0105844755,0.02649655,-0.030433314,0.048325557,-0.0015882606,-0.022819092,0.062422477,0.026307961,-0.08293137,-0.032484204,0.043846603,0.03533659,-0.0072311535,0.00648859,0.017998323,-0.042290755,-0.025388597,0.0069895256,0.0336393,0.019789904,-0.0 [...]
+{"input":"EComment1099511628874Comment_hasCreator_PersonPerson17592186045813","embedding":[0.04665737,0.027512886,0.03066857,0.019471737,0.016526433,0.08260878,-0.0018320497,-0.014317454,-0.037166942,0.043922443,-0.018338028,-0.024894837,0.024520831,0.02037169,-4.996499E-4,-0.007807395,-5.339826E-4,0.020617133,-0.014025261,0.009157326,0.046002854,-0.028938787,-0.05530628,0.0034098914,-0.0063464306,0.013101931,-0.0094203,0.033169743,-0.024053322,0.02830765,-0.01679525,-0.015942046,-0.0095 [...]
+{"input":"EForum220Forum_containerOf_PostPost206158433649","embedding":[-0.014812562,-0.004681487,-0.009581631,-0.023390615,-0.025095014,0.045144115,-0.019163262,-0.018378342,-0.036083892,0.017716765,-0.026104197,0.02475862,0.02668728,0.035119563,-0.05687306,-0.036263306,0.00470952,0.059788477,-0.026193902,-0.01455466,0.04722976,-0.027046101,-0.040367313,-0.016315123,0.027920727,0.0040143053,-0.026799412,0.013870657,-0.024601635,0.014756496,-0.046243,-0.0026519082,0.011538324,0.027225511 [...]
+{"input":"VComment1030792157359Comment","embedding":[0.005145526,0.021958834,0.0027319472,0.010520507,-0.0075605386,0.080125645,-0.024436945,-0.012321727,-0.045592688,0.031986013,-0.025974294,-0.0363686,0.026272586,0.016417498,-0.033041503,0.019905211,-0.0022486579,0.048552655,-0.034349397,-0.019469248,0.06553232,-0.0017051366,-0.07695917,0.024138654,8.575877E-4,0.024735237,-0.038318966,0.024459891,-0.003975306,-0.008593085,-0.042770393,0.013778767,0.016566643,0.054518484,0.018654682,0.0 [...]
+{"input":"VComment1030792157359Comment","embedding":[-0.004461185,-0.0124322735,-0.09665901,-0.046230122,0.014028678,0.0320593,-0.0698919,-0.039341528,-8.822595E-4,0.016073387,-0.011382583,0.030200474,0.029041441,0.0474985,0.018981906,0.031425115,0.03767952,-0.048242033,0.036104985,-0.009605763,0.06739888,0.043780845,-0.030484766,0.0065004276,-0.021966962,-0.046405073,-0.06153811,0.037023462,0.024470912,0.031556323,-0.0025736555,0.036389276,0.020447098,0.06862352,-4.5582268E-4,0.00256682 [...]
+{"input":"VComment1030792157359Comment","embedding":[0.0067120176,-0.02136484,0.0067243674,0.030305963,0.0094412835,0.05107802,-0.027761942,-0.01746236,0.04379175,0.021883523,-0.032998182,-0.01068242,0.016449692,-0.012880652,-0.002136484,0.023143185,0.02200702,0.021821776,-0.0043594153,-0.02558841,0.020500366,-0.014634298,-0.028033633,-0.035789195,-0.007545617,-0.026601078,0.06406982,0.006996059,0.0062705185,0.0012820448,-0.003121366,0.0041340347,-0.019364202,0.04314957,-0.024057057,0.02 [...]
+{"input":"VComment1030792157359Comment","embedding":[-0.02704168,0.016266242,-0.06862423,0.0052873427,-0.016157728,0.04961258,-0.0076502343,-0.0106235165,-0.06350237,0.007351821,-0.04883128,0.042559177,0.0069069136,0.038565863,0.037480723,0.014638533,0.020433178,-0.02184386,-0.003163182,0.02471948,0.002910887,0.007796728,-0.07135878,-0.0107862875,0.045749485,-0.008697394,-0.014681939,0.031903103,-0.0043921024,0.026173567,-5.995396E-4,0.018024169,-0.006489135,0.025370564,0.018208642,0.045 [...]
+{"input":"VComment962072674715Comment","embedding":[0.0506999,0.042249918,0.0036288628,0.0017435326,-0.01004159,0.07148918,-0.009266044,-0.021807903,-0.015429902,0.029331861,3.6118616E-4,-0.018914074,0.011355389,0.014260794,-0.022016259,-0.009156078,-0.0361613,0.050190587,-0.0040803,-0.008907209,0.0686185,-0.011777888,-0.07931409,-0.018694142,0.025535157,-0.005237832,-0.021124959,-0.018173253,-0.011193334,9.882429E-4,-0.04671799,-0.0032063636,-0.007830704,-0.008635188,-0.015568806,0.0037 [...]
+{"input":"VComment962072674715Comment","embedding":[-0.004482695,-0.012420345,-0.09665128,-0.046226423,0.014060356,0.03203487,-0.069886304,-0.03929465,-9.1362244E-4,0.016115835,-0.011425406,0.030241791,0.028951649,0.047538433,0.018969454,0.0314882,0.03769837,-0.048281904,0.036080226,-0.009588594,0.067437224,0.04384294,-0.030504193,0.006483508,-0.021965206,-0.046445094,-0.061489455,0.0370205,0.024468955,0.031553797,-0.0025994163,0.03640823,0.020478263,0.0685743,-5.162616E-4,0.002533816,0. [...]
+{"input":"VComment962072674715Comment","embedding":[0.033846073,-0.03140333,-0.09808549,-0.04307682,0.038520165,-0.017533721,-0.058625814,0.036922988,0.014221927,-0.017016988,-0.013552522,-0.016347583,0.06684658,0.03657067,-0.011755697,0.016688157,-0.0021975872,-0.034621175,0.011696978,-0.04634164,0.015913056,0.0048737405,-0.0111684995,0.0019289443,-0.05947138,-0.010152647,0.0100410795,0.0023135587,-0.02136225,-0.025766233,-4.2663578E-5,-0.0046770293,-2.014822E-4,-0.0036259454,-0.0063182 [...]
+{"input":"VComment962072674715Comment","embedding":[0.012448713,0.037120245,-0.035313074,-0.020709189,0.022223305,0.036924876,-0.013395036,-0.008950375,0.028963558,0.01834033,-0.011349759,0.03226042,0.035777077,0.06920972,-0.0062274095,0.0067280442,0.042517334,-0.008028474,1.0970467E-4,-3.310219E-4,-0.0061755143,-0.03343264,0.013553773,-0.0087122675,-0.051284548,0.043372076,0.001124139,0.011001756,0.019805605,0.012198396,-0.01993992,0.024384582,-0.05377551,0.045472298,-0.017925171,0.0382 [...]
+{"input":"VComment1168231110537Comment","embedding":[-0.016511546,-0.00919393,-0.018469948,0.011603818,0.035110492,0.08424642,-0.01884521,0.005620141,-0.0685323,0.0035004949,-0.038816206,-0.004966364,0.03011481,0.034172334,-0.034148883,0.041982483,-0.008337862,0.029903725,-0.0184934,0.0040956377,0.04873721,-0.0022193254,-0.0715344,-0.028637214,-0.010337307,-0.010202447,0.0012841012,0.045219123,0.0051598586,-0.028050866,-0.031709675,-0.012184302,0.0510826,0.052067664,7.813081E-4,0.0432020 [...]
+{"input":"VComment1168231110537Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1168231110537Comment","embedding":[0.037093718,0.007795828,-0.026573192,-0.01290833,-0.0024927144,0.026691401,-0.01899605,0.008410511,0.0066787605,0.017908536,-0.0030409049,-0.025343828,0.05754373,-7.934722E-4,0.00898973,0.027660709,0.016040847,-0.013830354,0.00651918,-0.040379904,0.0539502,0.029362906,-0.078017384,0.026951458,-0.0047519677,0.07045206,-0.0046574012,-0.01985897,0.01057963,-0.050403956,0.011797174,0.018416831,-0.022530474,-0.037046436,-0.009031103,0.01790 [...]
+{"input":"EComment687194770827Comment_hasCreator_PersonPerson910","embedding":[0.029346688,0.0051517067,0.007416854,0.052691165,0.0065520317,0.029621597,-0.03010269,0.0026560356,-0.06923161,0.04966715,-0.02153465,-0.043504573,0.024764847,0.009324045,0.00710758,-1.2045229E-4,-3.4864942E-4,0.030171419,-0.0031786517,-0.019037547,0.046070404,-0.016219715,-0.071293436,-0.009988412,-0.002489944,-0.012084604,-0.0030755603,0.021099376,-0.034478348,0.01207315,-0.021443013,-0.0014203705,-0.0051087 [...]
+{"input":"VComment893353200586Comment","embedding":[0.010027867,0.017339487,0.03636492,0.027864942,0.02908257,0.06041307,-0.023568122,-0.0078794565,-0.091556236,0.029621135,0.0039309473,-0.029621135,0.024282306,0.005754462,-0.0017649748,0.014517869,-0.029785048,0.020008901,-0.019236177,0.019809866,0.0510467,0.0019581562,-0.043530192,-0.002436719,-0.0049875905,-0.007498948,-0.05334146,0.007926288,0.03165832,-0.03905775,-0.022537822,-0.0030352883,0.0011488434,0.058492962,-0.006211072,0.048 [...]
+{"input":"VComment893353200586Comment","embedding":[0.017355971,0.03818751,-0.046340883,-0.04354294,-0.0031394854,0.053292014,-0.036919694,-0.042253267,0.0024181416,-0.018875167,-0.02195727,0.006257112,0.03873398,0.03672296,0.047696136,0.0072844806,0.03759732,-0.015650976,-5.451065E-4,-0.019618368,0.018241258,-0.0027624194,-0.016503474,-0.013366722,-0.0130934855,-0.066713385,-0.049226258,-0.01936699,0.016350463,0.017257607,-0.007257157,0.05416637,-0.032744642,0.08061565,-0.038209368,-0.0 [...]
+{"input":"VComment893353200586Comment","embedding":[0.015728716,0.02922236,-0.042894334,0.042252347,-0.0063069416,-0.015883269,0.0025813284,-0.054735456,-0.017095912,0.009463385,0.011543903,-0.014682512,0.023599017,8.2329067E-4,0.03314562,-0.0036765723,0.021661164,-0.014623068,0.034905147,1.3950616E-4,-2.8365632E-4,0.033668723,-0.034477156,-0.03371628,-0.031528763,-0.001976492,0.010943525,0.019616311,-0.013660086,-0.028841922,0.017821122,0.01541961,-0.016358815,0.035119142,-0.02805727,0. [...]
+{"input":"EComment1030792157359Comment_isLocatedIn_CountryCountry101","embedding":[0.005128461,0.021982396,0.0027492335,0.010451963,-0.007629589,0.08003611,-0.024391739,-0.012356493,-0.045525126,0.031963963,-0.026020914,-0.036415514,0.02629627,0.016429432,-0.033088323,0.019882824,-0.002248721,0.04855402,-0.034327414,-0.01945832,0.06553415,-0.0016951456,-0.07686955,0.024185224,8.626312E-4,0.024758877,-0.038297094,0.024460578,-0.003978286,-0.008644955,-0.042748645,0.01376768,0.016578581,0. [...]
+{"input":"EForum220Forum_hasModerator_PersonPerson166","embedding":[0.04297795,-0.01842725,-0.009384354,0.022991382,0.015627312,0.055179317,-0.011950966,-0.023742586,-0.06287346,0.022593016,-0.016264696,0.035579734,0.006709614,0.0087128235,0.010511159,0.018984962,-0.011029034,0.03592119,-0.019918276,-0.0013259881,0.045755126,-0.005434844,-0.09000785,-0.011108708,0.034737475,0.03562526,-0.023378367,0.024562081,0.016389897,-0.03264321,-0.019383328,-0.008308766,0.00674945,0.021124756,0.0126 [...]
+{"input":"EComment893353203618Comment_hasCreator_PersonPerson24189255811441","embedding":[0.03722477,0.035859782,0.008831917,0.010301012,0.037085958,0.07579139,-0.03861289,-0.014945433,-0.062095262,0.03199618,-0.01952623,0.004517176,0.035998594,0.041204046,-0.018901575,0.019144498,-0.042106327,0.025009308,-0.0057780524,-0.005815647,0.047890164,0.011313183,-0.063714735,-0.0057317815,0.023251021,-0.019803856,-0.04890812,0.0015124731,0.016356688,-0.016460797,-0.034703016,-0.021781927,0.0288 [...]
+{"input":"EComment1030792157359Comment_hasTag_TagTag15468","embedding":[0.005128461,0.021982396,0.0027492335,0.010451963,-0.007629589,0.08003611,-0.024391739,-0.012356493,-0.045525126,0.031963963,-0.026020914,-0.036415514,0.02629627,0.016429432,-0.033088323,0.019882824,-0.002248721,0.04855402,-0.034327414,-0.01945832,0.06553415,-0.0016951456,-0.07686955,0.024185224,8.626312E-4,0.024758877,-0.038297094,0.024460578,-0.003978286,-0.008644955,-0.042748645,0.01376768,0.016578581,0.05452001,0. [...]
+{"input":"EForum220Forum_containerOf_PostPost962072677731","embedding":[-0.0026805543,0.024277149,-0.022843728,0.0154946,-0.0026194064,0.0846401,-0.007343439,0.008754107,-0.06316154,0.012286467,-0.0015955343,-0.016188558,0.0173717,0.023389792,-0.009829174,0.004863393,-0.00584176,0.0536054,-0.015380836,-0.009038516,0.061386827,-0.009886055,-0.079452485,-0.027872078,0.044436056,-0.0075197727,-0.040340565,-0.018862002,0.014516233,-0.020340929,-0.048827328,2.561458E-4,-5.4464315E-4,0.0492823 [...]
+{"input":"EForum220Forum_containerOf_PostPost755914247530","embedding":[0.02568533,0.014511423,-0.01618018,0.019100506,-0.0062240134,0.06327747,-0.025347069,0.010807458,-0.05033333,0.051145155,-0.029518964,0.01850291,0.034232076,0.0108751105,-0.005806824,0.025775535,-0.008202844,0.022494396,-0.004101422,-0.018683316,0.04602613,-0.012718637,-0.08334766,-0.023633212,0.015199222,-0.008056264,-0.033893812,0.034863498,-1.9361953E-4,0.011906808,-0.016980732,-0.0073853782,0.009623542,0.01563896 [...]
+{"input":"EForum220Forum_containerOf_PostPost1168231107960","embedding":[0.023977712,0.027651243,-0.008696762,0.028285015,0.041406445,0.10328138,-0.018074242,0.005882931,-0.054926917,0.0025350885,-0.016513284,0.018027296,0.031054834,0.012640233,-0.006261434,0.032322377,-0.0140720885,0.059105117,-0.0054398775,0.0073646666,0.03187639,-0.027299147,-0.071264155,-0.028731003,0.02964645,0.012886699,-0.012264664,0.036899623,0.019376995,-0.02125484,-0.025656035,-0.01886059,0.004544968,0.01903663 [...]
+{"input":"VComment962072679199Comment","embedding":[-0.0039775018,0.014452163,-0.022912245,0.0128221335,0.0011608221,0.091832645,-0.0043046554,0.01086495,-0.041875686,0.026884008,-0.0020533206,0.0030189983,0.027251339,0.021959482,-0.01610515,0.008419906,-0.021569192,0.049038634,-0.014165186,-0.009418586,0.096607946,-0.009814614,-0.0798944,-0.009573554,0.03707743,0.011100272,-0.013545316,0.0108706895,-0.010405787,-0.0021882,-0.051242616,-0.0024450442,0.041531313,0.019801416,-0.023463242,0 [...]
+{"input":"VComment962072679199Comment","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062,0 [...]
+{"input":"VComment962072679199Comment","embedding":[0.06609024,0.015201223,-0.012429924,-0.028742006,-0.00820866,0.010477151,-0.035968434,0.009997727,0.03992075,-0.020112388,-0.0036219838,-0.023363112,-0.008693931,0.008647158,-0.006349434,0.031408068,0.015119371,-0.02785332,9.1792E-4,-0.07754963,0.022988927,0.01465164,0.040645733,0.0140202055,-0.021842988,0.0060629495,-0.0055981427,-0.01709553,0.004504824,0.009798942,0.007033489,0.01669796,-0.020322867,0.039616726,-0.059308156,-0.0016779 [...]
+{"input":"EForum220Forum_containerOf_PostPost274877910425","embedding":[-0.0029776471,-0.01211975,0.022089785,0.01617516,-0.017743872,0.02814385,-0.011068132,-0.029375577,-0.06437528,0.028864294,-0.014071925,0.011300534,0.018475937,0.012735615,-0.043668285,-0.0013014497,-0.013026116,0.037625838,-0.004119321,-0.031862278,0.050756536,-0.025680391,-0.058239873,-0.0025012235,0.0066931695,-0.011945449,-0.015013152,0.03908997,-5.2653515E-4,-0.0045725037,-0.042227395,-0.0026421172,-0.0022528442 [...]
+{"input":"VComment1099511628874Comment","embedding":[0.046590097,0.02753795,0.030763958,0.019461242,0.016550822,0.08261385,-0.0017854082,-0.014306643,-0.037192598,0.04387838,-0.018304087,-0.02491974,0.024592465,0.020326186,-4.8433949E-4,-0.007819562,-4.5329207E-4,0.02060671,-0.01402612,0.009175421,0.045982298,-0.028917186,-0.055262916,0.00339549,-0.006381885,0.013091046,-0.009426722,0.03321853,-0.024054797,0.028402895,-0.016761214,-0.015954712,-0.009531918,0.02149503,-0.01812876,0.017719 [...]
+{"input":"VComment1099511628874Comment","embedding":[0.017356569,0.038210686,-0.04629876,-0.04358816,-0.0031259314,0.05329385,-0.036920965,-0.042211004,0.002442817,-0.018919535,-0.021936169,0.0062791873,0.03871346,0.03672423,0.04765406,0.0072847316,0.037664194,-0.015607797,-5.550304E-4,-0.019597186,0.018241886,-0.0027543171,-0.016482184,-0.013378112,-0.013126725,-0.06667196,-0.049271673,-0.019378588,0.016340096,0.017214483,-0.007262872,0.054211956,-0.03274577,0.080574706,-0.038188826,-0. [...]
+{"input":"VComment1099511628874Comment","embedding":[-0.054842684,-0.022683183,-0.055610385,0.0019162551,0.0380732,0.047141675,-0.015557952,-0.016529575,-6.027657E-4,-0.020176157,-0.0072871675,0.009326375,0.052395634,-0.016625538,0.027661249,0.028620875,0.03699362,-0.0362739,0.05364315,-0.043207206,0.037497424,-0.0048041325,-0.06707793,0.037593387,-0.020236135,-0.012847006,-0.020140171,0.009008499,0.0031757655,0.008816573,0.018880662,0.008024881,0.026461715,0.00931438,0.0031937587,0.0441 [...]
+{"input":"VComment1099511628874Comment","embedding":[0.01782159,-0.03321733,-0.006280789,0.035835326,-0.0045334566,-0.0016857855,-0.019851137,-0.0040711043,-0.026252018,0.005749384,-0.028966088,0.06384068,0.056346964,0.031151753,0.042800635,0.018458074,0.0042812647,0.008124195,-0.027981337,-0.033817787,-0.023982286,-0.006863233,-0.0046835714,-0.009859518,-0.05384906,0.012201304,0.050630607,-0.015119529,-0.03573925,-0.01425487,-0.006442913,0.045250505,-0.058508612,-0.006079636,0.020079311 [...]
+{"input":"VComment1030792156421Comment","embedding":[0.024877325,0.012114272,0.027629042,-0.0037584447,0.022807943,0.05874807,-0.015100894,0.0074218097,-0.07064981,0.023982456,-0.03275216,-0.004328923,0.027561927,0.034922216,-0.036622465,0.040224306,-0.0143514415,0.028635768,-0.020112153,0.01624185,0.039843988,-0.007768571,-0.064072534,-0.00103539,0.007343509,-0.0055118264,-0.031342745,0.009960997,0.020100968,-0.006789809,-0.045772485,0.014608717,0.034676127,0.054765906,-0.029776726,0.04 [...]
+{"input":"VComment1030792156421Comment","embedding":[0.007974488,-0.0064518866,-0.05590905,-0.027297286,-0.0019730832,0.033124797,-0.034767892,-0.018183585,-0.047014426,-0.025369387,-0.01908181,1.4650931E-4,0.02407682,0.011211385,0.03435164,0.048328903,0.019278983,0.005674155,0.0107677495,-0.026201889,0.031876042,0.029641435,0.0042693084,-0.037988357,-0.025851361,-0.022291323,0.0032779747,0.015718943,-0.026574323,0.004841653,0.023813924,0.02885275,0.025785638,0.019739049,0.024273992,0.01 [...]
+{"input":"VComment1030792156421Comment","embedding":[0.0028644602,0.016603796,-0.05899231,-1.6701085E-4,0.016603796,0.057136595,-0.05523204,0.013319664,-6.482043E-4,0.033280846,0.0022876002,0.01648171,0.035844665,0.038628243,0.0027789995,0.0041601057,0.042779192,0.019912347,-0.009266384,-0.02641957,0.004852948,0.0076182126,-0.03130304,0.003442846,-7.279422E-4,0.00869868,0.010328538,-0.022720343,-0.015102129,0.0060402416,-0.0030994772,0.014027766,0.008423985,0.015822442,-0.036259763,0.024 [...]
+{"input":"VComment1030792161497Comment","embedding":[0.0063544814,-0.007021275,0.035402726,0.010999237,0.0068958947,0.058860168,-0.04572947,-0.014737838,-0.07290272,0.026466558,-0.0305699,-0.009443386,0.017427808,0.0131079,-0.019388292,0.029110935,-9.8238E-4,0.058677796,-0.027218837,-0.014783431,0.06460485,0.018989356,-0.07851062,-0.02164513,0.015763674,0.020984037,-0.026831299,0.010851061,-0.02009498,-0.02927051,-0.055167157,0.00723784,0.032234035,0.04543312,-0.0018351059,0.043632206,0. [...]
+{"input":"VComment1030792161497Comment","embedding":[0.017411405,0.038232956,-0.046299256,-0.04361049,-0.0031341624,0.053294424,-0.036921363,-0.042233314,0.0024182508,-0.018876018,-0.021958264,0.006235535,0.038713872,0.036724623,0.04765457,0.007279345,0.03759902,-0.015629824,-5.178063E-4,-0.019586466,0.018253012,-0.0027229232,-0.01651515,-0.013389185,-0.013115937,-0.066628955,-0.049184762,-0.019378796,0.01632934,0.017269317,-0.00728481,0.054212537,-0.03276798,0.08061929,-0.038211096,-0.0 [...]
+{"input":"VComment1030792161497Comment","embedding":[0.018393695,0.011282472,-0.036536112,3.8457618E-4,-0.004984767,0.042416062,-0.011156832,-0.005399379,0.013217328,-0.055331856,-0.024449544,-0.011960928,0.023205709,0.00728712,-0.043622207,0.034249462,0.04814525,-0.034877665,0.034601256,-0.01928574,0.0062600127,-0.002440557,-0.042566832,2.534885E-5,-0.011351574,0.021534696,0.01997676,-0.024575183,-0.0088450555,-0.019763172,0.01840626,0.04319503,-0.0179037,-0.045933984,-0.039400704,-0.00 [...]
+{"input":"EComment1030792161497Comment_hasCreator_PersonPerson19791209300150","embedding":[0.0063544814,-0.007021275,0.035402726,0.010999237,0.0068958947,0.058860168,-0.04572947,-0.014737838,-0.07290272,0.026466558,-0.0305699,-0.009443386,0.017427808,0.0131079,-0.019388292,0.029110935,-9.8238E-4,0.058677796,-0.027218837,-0.014783431,0.06460485,0.018989356,-0.07851062,-0.02164513,0.015763674,0.020984037,-0.026831299,0.010851061,-0.02009498,-0.02927051,-0.055167157,0.00723784,0.032234035,0 [...]
+{"input":"VComment824633727481Comment","embedding":[0.032826282,0.019335395,-0.018549968,0.036845826,0.025087502,0.08454904,-0.0069475747,0.002551198,-0.024255872,-0.012058633,-0.010118164,0.019404698,0.032803178,0.026820064,0.013918251,0.016182132,8.550014E-5,0.030955113,-0.022038193,-0.0075019947,0.06643799,0.006635714,-0.09794752,-0.028090611,0.024648586,0.030169684,-0.0034766751,-0.0024689012,0.015754767,-0.04259793,-0.018030198,-0.014126158,0.016990662,-0.017695237,-0.008044864,0.02 [...]
+{"input":"VComment824633727481Comment","embedding":[0.01739981,0.038209632,-0.046341203,-0.04363068,-0.003095789,0.053292383,-0.036898088,-0.042275418,0.0024359187,-0.018919013,-0.021935564,0.006224367,0.03871239,0.036723215,0.047652744,0.007268137,0.037619438,-0.015607367,-5.454518E-4,-0.019585716,0.018274171,-0.0027720018,-0.01650359,-0.013377743,-0.013104505,-0.06658269,-0.04918288,-0.019421773,0.016339645,0.01717029,-0.007289996,0.05421046,-0.03274487,0.080659926,-0.038165916,-0.0320 [...]
+{"input":"VComment824633727481Comment","embedding":[-0.027223917,0.008589205,-0.014729447,-0.026058877,-0.017344845,0.0024400477,-0.06324508,0.023312708,0.00973047,-0.022432983,-0.012256707,-0.0019719508,0.05325902,-0.003914181,-0.012553912,0.049217038,0.040039368,0.017499391,0.007923468,-0.043962467,0.0010788518,0.046886954,-0.011715795,0.02258753,0.015953928,-0.029244907,0.012197266,0.03476102,0.026367968,0.023609912,-0.0051624393,0.012328036,0.018331563,-0.009986065,-0.05454294,0.0330 [...]
+{"input":"EComment962072682626Comment_hasCreator_PersonPerson2199023255851","embedding":[0.02106436,0.016297162,-0.023459043,-0.010288277,-0.0057206363,0.06301569,9.4997487E-4,0.009423529,-0.031441327,0.029623142,-0.034345992,0.013780526,0.008492263,0.011618657,-0.031197425,0.022062145,-0.0071729687,0.05024404,0.0070066713,3.2618575E-4,0.0562751,-0.02328166,-0.07778292,-0.02029939,0.030022256,-0.010648588,-0.0534813,0.03257215,-0.0016574325,1.3979389E-4,-0.03102004,0.020376995,0.04323737 [...]
+{"input":"VComment1099511636500Comment","embedding":[0.026887747,0.029839678,-0.030274458,0.035423175,0.022070836,0.07006832,-0.008552591,0.0034381992,-0.056246877,0.031555917,-0.020411804,0.0040674866,0.024210414,0.008604079,-6.1391306E-4,0.031189786,-0.010846632,0.03389,-0.009284854,0.008112091,0.030411758,-0.023157787,-0.06686468,-0.032311063,0.022082277,0.010743657,-0.02318067,0.017105183,0.01743699,-0.03766573,-0.0027173785,0.0037871678,0.016281389,0.007419874,0.023729866,0.05061761 [...]
+{"input":"VComment1099511636500Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1099511636500Comment","embedding":[-0.012255914,0.0022081102,-0.07460645,0.010029754,0.011533916,0.020637106,-0.08611028,0.035401963,0.043103274,0.005694758,-0.030468311,-0.062380616,0.039613616,0.016281052,0.042092476,-0.029096514,0.018579412,0.0044432953,-0.010595319,-0.046857662,0.014175225,0.023741696,0.017688949,0.017881481,-0.019854942,5.4563483E-4,0.009554438,0.0021148522,0.008447375,-0.043680873,-0.006479931,0.0063295146,-0.024716394,-0.05487184,0.013417128,0.00 [...]
+{"input":"EComment1099511634167Comment_hasCreator_PersonPerson24189255812253","embedding":[0.0033445181,0.03315485,-0.0016010992,0.01744273,0.034976546,0.13853991,-0.03408847,-0.011129418,-0.036934868,0.021644015,-0.023431553,6.0130167E-4,0.025708672,0.04105645,-0.033063766,0.013560242,0.004927116,0.079608075,-0.0013278449,-0.0027809313,0.034361724,-0.041284163,-0.056882426,-0.027666993,0.02798579,0.007912988,-0.021985581,0.008186243,-0.0081008505,-0.03276774,-0.022577632,-0.009558206,0. [...]
+{"input":"VComment1099511634167Comment","embedding":[0.0033445181,0.03315485,-0.0016010992,0.01744273,0.034976546,0.13853991,-0.03408847,-0.011129418,-0.036934868,0.021644015,-0.023431553,6.0130167E-4,0.025708672,0.04105645,-0.033063766,0.013560242,0.004927116,0.079608075,-0.0013278449,-0.0027809313,0.034361724,-0.041284163,-0.056882426,-0.027666993,0.02798579,0.007912988,-0.021985581,0.008186243,-0.0081008505,-0.03276774,-0.022577632,-0.009558206,0.03645667,0.0070761465,-0.002564605,0.0 [...]
+{"input":"VComment1099511634167Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1099511634167Comment","embedding":[0.027318673,0.0056803874,-0.048683893,0.028614989,0.029239142,-0.017608302,-0.0075918543,0.018292468,0.030967563,-0.0029407183,-0.049019974,0.006169507,0.014847627,-0.023885835,0.015303738,0.012735111,0.013155214,-0.031183617,-3.6590188E-4,-0.061214954,0.05079641,-0.022733552,0.012699102,-0.01355131,-0.0075918543,0.027894814,0.014055433,0.010760629,0.010034451,-0.015615814,0.0012122961,0.027054608,-0.013299248,-0.030319406,-0.032888032 [...]
+{"input":"VComment1030792160930Comment","embedding":[0.04409614,0.00857113,0.0031573419,0.011377657,-0.0248995,0.056759182,-0.016536051,-0.0010370114,-0.021015268,0.024293289,-0.026067013,0.0018705496,0.012000705,0.014863362,0.005281882,-0.017827053,-0.020308021,0.056175426,-0.0011780394,0.007201546,0.06762605,-0.016760573,-0.06439293,-0.018017897,0.045308556,-0.009547802,-0.050068423,0.0054811453,-0.029524654,0.02039783,-0.037809517,0.002646554,0.009761098,-0.019926336,-9.586041E-5,0.00 [...]
+{"input":"VComment1030792160930Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1030792160930Comment","embedding":[-0.021246178,-0.037421152,-0.0034488987,0.03496967,-0.0013316415,0.013350964,-0.045857135,0.033527624,-0.03172506,0.007931265,-0.009829963,-0.038574792,0.01907109,-0.015922617,-0.009042844,0.025307948,0.024334565,-0.014829063,0.0014315334,-0.039391953,0.03972843,0.05095237,-0.01463679,-0.013002468,-0.017028186,0.027951702,0.012107197,0.023048738,0.011975009,-0.031196311,0.026581757,0.010779311,-0.010689183,0.007252301,-0.055422723,0.01 [...]
+{"input":"EComment1030792157359Comment_hasCreator_PersonPerson10995116279002","embedding":[0.005145526,0.021958834,0.0027319472,0.010520507,-0.0075605386,0.080125645,-0.024436945,-0.012321727,-0.045592688,0.031986013,-0.025974294,-0.0363686,0.026272586,0.016417498,-0.033041503,0.019905211,-0.0022486579,0.048552655,-0.034349397,-0.019469248,0.06553232,-0.0017051366,-0.07695917,0.024138654,8.575877E-4,0.024735237,-0.038318966,0.024459891,-0.003975306,-0.008593085,-0.042770393,0.013778767,0 [...]
+{"input":"VComment1030792159190Comment","embedding":[-0.008848496,0.043475535,-0.015316025,-0.017010175,0.014079754,0.10805926,-0.004584505,-0.01932246,-0.050275024,0.031891216,-0.005008043,-0.021703426,0.0345927,0.005817915,-0.014709337,0.037820738,0.016586637,0.035943437,0.014033967,-0.019860467,0.06639234,0.009552483,-0.07435942,-0.025251983,0.029327098,0.019780338,-0.041254826,0.017800014,0.013598982,0.0020304036,-0.031730957,-0.0024124458,0.012740461,0.012099431,0.018212106,0.030929 [...]
+{"input":"VComment1030792159190Comment","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062, [...]
+{"input":"VComment1030792159190Comment","embedding":[-0.010951886,0.032753542,-0.017602157,0.013926,0.008450056,0.05754208,-0.075054884,0.026677672,-0.0015484857,0.029256087,-0.00477709,-0.07071497,0.02647344,0.055601884,0.03346835,0.0103009,0.05478496,0.015776843,0.02106132,-0.0366084,-0.009796705,0.024009904,-0.01982317,0.0025353362,-0.020103987,0.009330803,0.028260462,9.95626E-4,0.0077033374,-0.014934391,0.036353115,0.047126297,0.010983798,-0.0061269295,-0.0010075927,0.011756046,-0.06 [...]
+{"input":"VComment1030792157384Comment","embedding":[-0.0033680177,0.009201137,0.044280116,0.020248236,0.009315793,0.074251175,-0.03139279,-0.02216299,-0.06214351,0.031438652,-0.027333971,0.0069080195,0.023389809,0.033456597,-0.040794577,0.012635083,-0.02161264,0.02692121,-0.0088973,-0.009728555,0.051457576,-0.023687914,-0.06411559,-0.0030011188,0.030292096,-0.016384332,-0.033800565,0.011058563,-0.028480532,-0.015329497,-0.055860367,-0.0060423673,0.027242247,0.013105172,-0.0011350936,0.0 [...]
+{"input":"VComment1030792157384Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1030792157384Comment","embedding":[-0.0148465065,-0.008955137,-0.05923284,0.007078579,0.014208222,-0.007225385,-0.06265404,-0.008150898,-0.011655082,-0.017616663,0.0128742065,-0.008438126,0.04587992,-0.013774187,0.010723186,0.033190813,0.0342376,-0.045113977,0.023808027,-0.07215172,0.020667665,0.005980729,-0.042943805,0.0020425117,0.011693379,-0.008138132,-0.038373686,0.020067677,0.06679013,0.026986685,-0.009370022,-0.007078579,-0.028084535,-0.018471964,-0.052441485,0.0 [...]
+{"input":"VComment824633731307Comment","embedding":[0.0424611,0.015689135,-0.027868707,0.03525726,0.020468606,0.071622804,-0.008265946,-0.02123055,-0.03802797,-0.00415029,-0.034079712,0.018044237,0.0035211083,0.024820928,-0.034841657,0.01282607,-0.0121680265,0.058739014,-4.2859392E-4,-0.009882192,0.0686212,-0.006187915,-0.1098124,-0.011123239,0.021115106,0.02565214,-0.008439115,-0.00505077,0.0024229265,-0.03830504,-0.020410884,0.021311363,0.0070422166,0.008496839,0.029785113,0.032463465, [...]
+{"input":"VComment824633731307Comment","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062,0 [...]
+{"input":"VComment824633731307Comment","embedding":[-0.0021828,-0.038115773,-0.046231393,0.037286624,0.0647742,0.040578097,-0.015829226,-0.01592973,-0.0066394815,0.018630749,-0.022864439,-0.018253863,0.0109359855,0.02478656,-0.0088191405,0.037864517,0.077789344,-0.044020325,0.018077983,-0.03708562,0.0050911065,0.028492609,-0.023995098,-0.049547993,-0.030276537,0.059899803,-0.0035835612,0.005986212,0.051658556,-0.026959937,0.016696066,0.027562955,-0.021394582,-0.036130838,-0.0481912,-0.02 [...]
+{"input":"VComment824633731307Comment","embedding":[0.05694966,-0.03562404,-0.029304432,-0.004828155,0.050703254,-0.015860017,-0.022740824,-0.019483421,-0.02854803,0.042797644,-0.00929031,0.04782405,0.033110835,-0.032281235,0.013810415,0.008405809,0.031012433,0.007442008,-0.025766427,0.014859616,0.021350022,0.049946852,-0.034843236,-0.022399224,-0.03691724,0.031890832,0.026742429,-0.031402834,0.015579416,-0.012267113,0.015494016,0.007289508,0.032647233,-0.033598837,-0.020654622,0.0386496 [...]
+{"input":"EComment1099511634603Comment_hasCreator_PersonPerson17592186045408","embedding":[-0.006741504,0.03586435,-0.0014990531,0.0429785,0.041691177,0.115181476,-0.016893283,-0.009254041,-0.052983478,0.03816798,-0.0055219354,-0.013020024,0.0061938274,0.01903882,-0.027530631,0.017740207,-0.012681255,0.053164158,0.0024899526,-0.012534454,0.041036226,-0.06075258,-0.0545644,-0.025972294,0.007961073,-0.019163037,-0.026040047,0.018575836,-0.022437803,-0.009174995,-0.018564545,-0.012150517,0. [...]
+{"input":"VComment1168231112641Comment","embedding":[-4.1887113E-5,0.0022590642,0.014766982,-0.019810474,0.028079985,0.12613274,-0.0033310903,-0.01116611,-0.024604063,0.011427372,-0.041438423,-0.015141836,0.04711803,0.0046885167,-0.039121144,0.014778341,-8.4129197E-4,0.042233568,-0.009377033,-0.02319552,0.08414908,0.030874351,-0.063884236,-0.018481446,0.006253249,0.023967948,-0.048662886,0.021491637,-0.009632616,-0.01899261,-0.02944309,-0.0075879567,0.012438343,0.006991598,0.03116969,0.0 [...]
+{"input":"VComment1168231112641Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1168231112641Comment","embedding":[0.039772246,0.022195403,-0.039628666,0.019431448,0.009494368,0.01731361,-0.05001444,-5.3983513E-5,0.011815612,-0.027352395,-0.0040502124,-0.030918017,0.012491644,0.018222963,0.005318521,0.020448487,0.006072327,-0.009709741,0.04934439,-0.0168709,0.009709741,0.009033709,-0.045419812,0.003984404,-0.043553244,0.03163593,-0.017708462,-0.05011016,0.020304905,-0.010152453,0.0023212442,0.052694637,-0.05288608,-0.0046095843,-0.007807278,0.02577 [...]
+{"input":"EComment824633731307Comment_hasCreator_PersonPerson24189255812726","embedding":[0.042481158,0.01573419,-0.027959067,0.035254747,0.020467145,0.07157152,-0.00824804,-0.021182861,-0.038002167,-0.0041095903,-0.034100365,0.018042948,0.0035064272,0.024842244,-0.034862258,0.012848242,-0.0122133335,0.05873482,-4.4299307E-4,-0.009869943,0.06861631,-0.006210561,-0.10980456,-0.011157076,0.021136686,0.025627222,-0.008380794,-0.0050590676,0.0023736926,-0.038209956,-0.020386338,0.021298299,0 [...]
+{"input":"VComment1168231112625Comment","embedding":[0.004398554,0.0015175447,-0.0010901903,0.013605574,0.041398156,0.12112449,-0.0131520545,0.008035429,-0.041049294,0.01836171,-0.03093233,0.024048142,0.015594081,0.03835144,-0.012558991,0.010721657,-0.0013394804,0.071028076,-0.009657632,0.0093611,0.026234338,-0.021489829,-0.05730621,-0.022571297,0.014140494,0.027769325,-0.02238524,0.036607135,-0.006302753,-0.02951363,-0.019640867,0.011256577,0.023908598,-0.0014703032,-2.6455283E-4,0.0136 [...]
+{"input":"VComment1168231112625Comment","embedding":[0.017323393,0.03825355,-0.046341445,-0.04358719,-0.0031231293,0.053336382,-0.036876425,-0.04223192,0.002487847,-0.018919114,-0.021946609,0.006262653,0.038690735,0.036679693,0.047652997,0.007311893,0.037597775,-0.01557466,-5.3657434E-4,-0.019596748,0.018274268,-0.0027651852,-0.016492745,-0.013399673,-0.013093644,-0.06662676,-0.049226854,-0.019334437,0.01633973,0.017257817,-0.00726271,0.054254465,-0.0327669,0.08061663,-0.038209833,-0.032 [...]
+{"input":"VComment1168231112625Comment","embedding":[-0.043065302,-0.016452562,-0.038955048,-0.03496025,0.019431341,0.015413453,-0.005065657,0.031358007,0.021070825,0.013289052,0.004701969,0.035006434,0.05495733,-0.028656323,3.6188422E-4,0.048029937,0.07490823,-0.040479075,0.028517775,-0.028841054,0.04144891,0.054726418,0.017468581,0.005423573,-0.04669064,-0.0070082145,-8.907295E-6,0.044127505,0.0155981835,-0.02342614,-4.9502007E-4,0.0031663966,0.013577693,0.006852348,-0.013289052,0.0543 [...]
+{"input":"EPerson17592186045813Person_likes_CommentComment824633727481","embedding":[0.027363522,0.018620148,0.017116658,0.011657832,0.010582258,0.09650094,-0.024078975,-0.030532416,-0.04269912,0.024148365,-0.016873786,0.0011558081,0.030509286,0.01627239,-0.01457229,0.0377723,-0.013647065,0.04417948,0.016977875,0.002389682,0.04677011,-0.0062394845,-0.06985447,-0.006158527,0.057780284,0.025559334,-0.036754552,0.037194036,0.01757927,-0.026253251,-0.03256791,-0.023986451,0.013762718,0.01151 [...]
+{"input":"VComment549755822668Comment","embedding":[0.015719112,0.020894503,-0.020531317,0.023902131,0.012189406,0.07286405,-0.015128937,-0.008114921,-0.05792805,0.034933884,0.0025763456,-0.0052973977,0.023743236,0.027170798,-0.007439623,0.011360889,0.0067700003,0.049393196,-0.0030218149,4.1603157E-4,0.068823606,-0.03625043,-0.095517725,-0.014459314,0.007882255,0.009181778,-0.018772138,-0.036568217,-0.016876766,-0.015072189,-0.056339115,0.0010271333,0.022608284,0.006906195,-0.020292977,0 [...]
+{"input":"VComment549755822668Comment","embedding":[0.007996142,-0.006446205,-0.055907276,-0.027274512,-0.0019771282,0.033189468,-0.034788694,-0.018172055,-0.04696912,-0.02539049,-0.019081205,1.0534301E-4,0.024185592,0.011183646,0.034328643,0.048327368,0.01931123,0.0056575444,0.010816699,-0.026201058,0.031875033,0.029684309,0.004244528,-0.037965246,-0.025850542,-0.022323476,0.0032504867,0.015740352,-0.026551574,0.0048853145,0.023835076,0.028851833,0.025719099,0.019705562,0.024251314,0.01 [...]
+{"input":"VComment549755822668Comment","embedding":[-0.00786792,-0.028977526,-0.02186919,-0.008565149,2.1823842E-4,0.03015658,-0.03543965,-0.029476358,0.03763904,0.001550343,-0.016937569,-0.022617435,-0.021086933,-0.02448805,0.057955053,0.022265987,0.028932178,0.032061208,0.021086933,-0.03432862,0.018366039,0.045643006,0.011047966,-0.012856226,-0.047388915,0.044713367,-0.011620487,0.0264607,0.008327071,-0.013343721,0.023807827,-0.02222064,-0.025326993,0.019987239,-0.029317638,0.010600151 [...]
+{"input":"VComment824633729078Comment","embedding":[0.029002579,0.012934214,-0.02331901,0.03150522,0.045585506,0.11208094,-0.037001677,-0.016407508,-0.047012247,9.669963E-4,-0.007870458,-0.008355783,0.0025874276,0.018699648,0.012852353,0.032557733,0.010115819,0.0522982,5.9130765E-4,-0.0044293255,0.040159218,0.004742156,-0.08784975,-0.018968623,0.004987742,0.045258056,-0.0133318305,0.0115776425,0.017775774,-0.064975135,-0.010560214,0.0023228377,0.020383667,-0.0022409756,0.013811309,0.0216 [...]
+{"input":"VComment824633729078Comment","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062,0 [...]
+{"input":"VComment824633729078Comment","embedding":[0.03166983,0.018662155,-0.03207372,0.011499023,0.01942242,0.07008702,-0.03730055,0.0055238074,0.02984044,-0.031741105,-0.030743256,-0.019196715,-0.016832763,0.0094617475,0.021168657,0.020360874,0.064242475,0.015003374,-0.0033618012,-0.042788718,0.021275569,0.009265741,0.0041874023,0.003421197,-0.011837578,-0.0018056317,0.018543363,-0.035114784,-0.0060732183,0.026347967,8.790575E-4,0.029721648,-0.041030604,0.008950944,0.010245772,-0.0291 [...]
+{"input":"VComment962072682626Comment","embedding":[0.02106436,0.016297162,-0.023459043,-0.010288277,-0.0057206363,0.06301569,9.4997487E-4,0.009423529,-0.031441327,0.029623142,-0.034345992,0.013780526,0.008492263,0.011618657,-0.031197425,0.022062145,-0.0071729687,0.05024404,0.0070066713,3.2618575E-4,0.0562751,-0.02328166,-0.07778292,-0.02029939,0.030022256,-0.010648588,-0.0534813,0.03257215,-0.0016574325,1.3979389E-4,-0.03102004,0.020376995,0.04323737,0.0062694186,0.024767252,0.021297175 [...]
+{"input":"VComment962072682626Comment","embedding":[0.007979992,-0.006506678,-0.05590923,-0.027275467,-0.0019977363,0.033146814,-0.03481182,-0.018161738,-0.046970766,-0.025435196,-0.01907092,1.3144803E-4,0.024098808,0.011140222,0.034329847,0.048285246,0.01923523,0.005685128,0.01079517,-0.026180068,0.031832334,0.029707257,0.0043076617,-0.03805421,-0.025851447,-0.022335213,0.0033163244,0.01570804,-0.026530595,0.004942994,0.02383591,0.028918568,0.025763815,0.019739114,0.02418644,0.011841278 [...]
+{"input":"VComment962072682626Comment","embedding":[0.0517195,0.034933347,0.012929875,-0.04295632,0.007091732,0.053056665,-0.018087499,0.0066261133,0.056304056,-0.020427532,-0.066285014,-0.016463803,0.02960858,0.011150973,0.011288271,0.01863669,0.09589359,0.02903551,0.043457754,-0.04656188,-0.007921489,0.019747011,-0.020355899,6.505792E-5,-0.054298315,0.021143869,-0.018827714,0.0071573965,0.034288645,-9.7451627E-4,-0.03851503,-0.0023683878,-0.014410305,6.7809466E-5,-0.0150191905,0.024331 [...]
+{"input":"VComment1168231110927Comment","embedding":[0.023560219,0.010134526,-0.031027764,-0.009589781,0.0019704446,0.089519754,-0.017443188,-0.027781993,-0.04214964,0.029053064,-0.032435022,0.0059638224,0.037178844,0.004105448,-0.013414345,0.02098403,-0.012551832,0.034954466,0.017284304,-0.0098791765,0.044056248,6.1532063E-4,-0.07808011,-0.029620506,0.042512804,-0.008766989,-0.029733995,0.029733995,-0.004749495,0.02304952,-0.034795582,-0.008034988,0.029121157,0.0092379665,0.0049168905,0 [...]
+{"input":"VComment1168231110927Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1168231110927Comment","embedding":[0.020129725,-0.03341487,-0.007628857,0.026475223,-0.0023959007,0.00639303,-0.012215678,0.014390258,-0.013950589,0.033248506,0.001140021,0.024882907,0.056895588,0.0020587218,0.01411695,0.013641632,0.009969799,-0.037977923,-0.020997182,0.012031492,0.061553705,0.009096402,-0.004242215,-0.00542754,-0.01749171,0.027972477,0.0061018975,0.0235639,0.024027335,-0.034032784,-0.009702433,0.021377435,0.0030984804,0.006039512,-0.018489879,-0.029731 [...]
+{"input":"EComment1168231110927Comment_hasCreator_PersonPerson8796093023077","embedding":[0.02365475,0.01017018,-0.03103267,-0.009591297,0.001972175,0.08948851,-0.017445946,-0.027763683,-0.042156305,0.029012255,-0.032485552,0.005942064,0.037184723,0.0040833955,-0.013416465,0.020964647,-0.012587869,0.034959994,0.017241634,-0.009875064,0.044085916,6.2605913E-4,-0.07813786,-0.02962519,0.042519525,-0.008745674,-0.029715996,0.029738696,-0.00473322,0.023041815,-0.034732983,-0.00804761,0.029148 [...]
+{"input":"VComment962072685659Comment","embedding":[-0.013252189,5.8327295E-4,-0.036964834,0.01585021,-0.010927644,0.07228881,-0.012078522,0.0071559544,-0.05756669,-0.0117594665,-0.013320559,0.011617031,0.03170042,0.0054011503,-0.010939038,0.0033329884,-0.0023402136,0.030333042,-0.011070079,-0.0016380071,0.063446425,-0.012272234,-0.06253484,-0.020032113,0.030993942,-0.0024456158,-0.061395355,0.021228572,8.8096294E-4,-0.0051048845,-0.032817114,-0.0042360285,0.029147979,0.031632055,-0.0057 [...]
+{"input":"VComment962072685659Comment","embedding":[0.007974377,-0.006490135,-0.055908266,-0.027231181,-0.0019730558,0.033124335,-0.03481122,-0.018238101,-0.046969954,-0.025412848,-0.019081544,7.4708434E-5,0.0241203,0.011200275,0.034329254,0.04837204,0.019322528,0.0056521683,0.010778553,-0.026201524,0.03185369,0.02966293,0.0042363876,-0.03796592,-0.025829094,-0.022334827,0.0032505444,0.015729677,-0.02661777,0.0049073086,0.023813592,0.028830439,0.025785279,0.019738773,0.02420793,0.0118520 [...]
+{"input":"VComment962072685659Comment","embedding":[-0.02924224,0.044275057,-0.037758484,-0.026560329,0.028842308,0.01228033,-0.03335921,0.056508336,0.0054638055,0.0057020015,-0.0062871994,0.0148916645,0.04267532,0.011833345,-0.047098123,0.025195848,-0.0025275247,-0.01151575,-0.004225774,-0.037240922,0.017279506,-0.022408072,0.014726985,-0.017444184,-0.012045074,0.06408356,-0.017655915,0.0075340527,0.025125273,-0.03166537,-0.01036888,0.044980824,-0.019090973,-0.018632224,0.0019188015,0.0 [...]
+{"input":"EComment549755822668Comment_hasCreator_PersonPerson2199023255851","embedding":[0.015719112,0.020894503,-0.020531317,0.023902131,0.012189406,0.07286405,-0.015128937,-0.008114921,-0.05792805,0.034933884,0.0025763456,-0.0052973977,0.023743236,0.027170798,-0.007439623,0.011360889,0.0067700003,0.049393196,-0.0030218149,4.1603157E-4,0.068823606,-0.03625043,-0.095517725,-0.014459314,0.007882255,0.009181778,-0.018772138,-0.036568217,-0.016876766,-0.015072189,-0.056339115,0.0010271333,0 [...]
+{"input":"VComment1099511634811Comment","embedding":[-0.01883081,-0.012035836,0.002135482,0.027202578,0.021303771,0.11479987,-0.007657106,-0.016391879,-0.061166096,0.015677216,-0.03385008,-0.011173703,0.030560361,-0.0026147598,-0.024026297,0.010220819,-2.6365615E-6,0.05667393,-0.0073111183,0.0043446985,0.017821206,-0.04131434,-0.040860586,-0.0086780535,-0.002940896,0.014905834,-0.03385008,0.022018434,-0.037094425,-0.035279408,-0.048869353,0.015314212,-0.0021142121,0.0147129875,0.0408379, [...]
+{"input":"VComment1099511634811Comment","embedding":[-0.004461185,-0.0124322735,-0.09665901,-0.046230122,0.014028678,0.0320593,-0.0698919,-0.039341528,-8.822595E-4,0.016073387,-0.011382583,0.030200474,0.029041441,0.0474985,0.018981906,0.031425115,0.03767952,-0.048242033,0.036104985,-0.009605763,0.06739888,0.043780845,-0.030484766,0.0065004276,-0.021966962,-0.046405073,-0.06153811,0.037023462,0.024470912,0.031556323,-0.0025736555,0.036389276,0.020447098,0.06862352,-4.5582268E-4,0.00256682 [...]
+{"input":"VComment1099511634811Comment","embedding":[-0.040717147,1.4967241E-4,-0.03699058,-0.029687503,0.03421441,0.02631108,-0.045944348,-0.010585709,0.021934237,-0.014431078,0.03091302,0.02721146,0.026586197,0.0117549505,-0.010066739,0.008859982,0.014381057,-0.015018825,0.011361035,-0.038141064,0.06247631,0.017032173,0.00669657,0.031663336,-0.023659965,0.036865525,-0.0204211,-0.012517772,0.072130375,-0.0178075,-0.019833352,-1.5570522E-7,-0.06537753,-0.0036796746,-0.026611207,0.0188204 [...]
+{"input":"VComment1099511634603Comment","embedding":[-0.006741504,0.03586435,-0.0014990531,0.0429785,0.041691177,0.115181476,-0.016893283,-0.009254041,-0.052983478,0.03816798,-0.0055219354,-0.013020024,0.0061938274,0.01903882,-0.027530631,0.017740207,-0.012681255,0.053164158,0.0024899526,-0.012534454,0.041036226,-0.06075258,-0.0545644,-0.025972294,0.007961073,-0.019163037,-0.026040047,0.018575836,-0.022437803,-0.009174995,-0.018564545,-0.012150517,0.020337434,0.015109099,0.0016289145,0.0 [...]
+{"input":"VComment1099511634603Comment","embedding":[-0.04383671,-0.014797563,-0.06864187,-0.029081915,-0.02968066,0.016989399,-0.06278272,-0.019138467,0.008291554,-0.033123445,-0.011397544,0.024548559,5.2223157E-4,8.967815E-4,0.03474861,0.038597688,0.032930993,-0.042147394,0.015909519,-0.02563913,0.023842894,0.017128393,-0.039880715,-0.008040294,-0.014348504,-0.054271985,-0.06047328,-0.013407618,-0.011942831,-0.024291953,-0.01927746,0.044478223,-0.019459223,0.045675714,0.004557414,-0.00 [...]
+{"input":"VComment1099511634603Comment","embedding":[0.014650416,7.982797E-4,0.009221802,-0.020495657,0.036290247,0.037409548,-0.011174361,0.0396979,-0.009563811,0.009812545,0.0068712686,-0.011454187,0.0058732247,0.006280526,-0.018766958,0.043428905,0.0024826734,0.0419365,0.010322449,-0.07253075,0.03238513,-0.034723226,0.0045238445,-0.0228835,0.026067292,0.039872013,0.005469032,-0.004169399,-0.0131082665,-0.03534506,0.011802414,0.03934967,-0.021963187,-0.027733808,-0.06795405,-0.01437680 [...]
+{"input":"EComment824633727481Comment_hasCreator_PersonPerson21990232556036","embedding":[0.032826282,0.019335395,-0.018549968,0.036845826,0.025087502,0.08454904,-0.0069475747,0.002551198,-0.024255872,-0.012058633,-0.010118164,0.019404698,0.032803178,0.026820064,0.013918251,0.016182132,8.550014E-5,0.030955113,-0.022038193,-0.0075019947,0.06643799,0.006635714,-0.09794752,-0.028090611,0.024648586,0.030169684,-0.0034766751,-0.0024689012,0.015754767,-0.04259793,-0.018030198,-0.014126158,0.01 [...]
+{"input":"EPerson15393162789718Person_likes_CommentComment824633727481","embedding":[0.025656203,-3.9937626E-5,-0.004645963,0.042201076,0.055180643,0.10579397,-0.018257616,-0.016311845,-0.048283063,0.043692444,-0.024374558,-0.026355281,0.026798032,0.026098954,0.0071772123,-0.006967488,-0.007911245,0.055739906,-0.004290598,-0.002991476,0.041035943,-0.01892174,-0.10877671,-0.026192164,0.042317588,0.036748257,-0.03721431,-0.003946884,0.02244044,-0.047583982,-0.026285375,0.01810615,-0.015962 [...]
+{"input":"EPerson1425Person_likes_CommentComment824633727481","embedding":[0.029925548,0.015809938,0.0067258067,0.019736666,0.058843654,0.09991973,-0.02084714,-0.0069719427,-0.049914073,0.04558666,-0.009736679,-0.005941606,0.005912986,0.030589541,-0.0019819664,0.024361731,-0.0033571792,0.015455046,-0.008013727,-0.02070976,0.0585689,-0.023033742,-0.08865472,-0.009616473,0.016599864,0.025918683,-0.009341717,0.012787619,0.022381196,-0.040503666,-0.009622197,0.0015426425,0.03429875,0.0244991 [...]
+{"input":"VComment1168231112614Comment","embedding":[0.0032002535,-0.015468867,-0.014099837,-0.0050578048,0.016779391,0.085698925,-0.02205659,-0.03503312,-0.062203098,0.0094778985,-0.034682088,-0.015913509,0.05546326,0.0058856583,0.011894178,0.013210553,-0.006271795,0.021459835,-0.00379701,-0.0034225746,0.026397703,0.008828487,-0.05630574,-0.027123172,0.014497675,-0.0030305875,-0.028012456,0.0253212,0.0023563108,0.0048559606,-0.03552457,-1.5513111E-4,0.020219518,0.028854936,0.009360888,0 [...]
+{"input":"VComment1168231112614Comment","embedding":[-0.04383671,-0.014797563,-0.06864187,-0.029081915,-0.02968066,0.016989399,-0.06278272,-0.019138467,0.008291554,-0.033123445,-0.011397544,0.024548559,5.2223157E-4,8.967815E-4,0.03474861,0.038597688,0.032930993,-0.042147394,0.015909519,-0.02563913,0.023842894,0.017128393,-0.039880715,-0.008040294,-0.014348504,-0.054271985,-0.06047328,-0.013407618,-0.011942831,-0.024291953,-0.01927746,0.044478223,-0.019459223,0.045675714,0.004557414,-0.00 [...]
+{"input":"VComment1168231112614Comment","embedding":[0.007216826,0.011451492,-0.012978358,-0.011874959,0.028795732,0.048477985,0.0045507755,0.017022166,0.028175443,0.02154312,0.020147469,0.004887759,0.011248706,-0.012835214,0.03330476,0.01804803,0.02626686,0.012393855,0.054012872,-0.04914599,0.05988176,0.025384141,-0.055396594,-0.02600443,-0.031658605,0.047237407,-0.025312569,0.02793687,0.014946584,-0.033280898,2.2049341E-4,-0.007348041,-0.0035666628,-0.0537743,-0.02223498,0.0043628993,- [...]
+{"input":"VComment1168231112614Comment","embedding":[-0.0018985962,-0.043485504,0.023055773,0.022421516,0.035384826,0.049494248,-0.06965692,-0.07686742,-0.026972584,-0.009853228,-0.0044342307,-0.014799315,0.025815345,-0.0037610286,-4.1275343E-4,0.020819185,0.059775878,-0.030422049,0.010604321,-0.022555046,-0.02088595,0.06436033,-0.0121398885,-0.016768847,0.0077612945,-0.004957214,-0.038812038,0.012206652,0.0031684998,-0.009780901,0.010693339,0.01610121,0.0020349056,-0.0068655466,-0.03347 [...]
+{"input":"VComment1168231112925Comment","embedding":[0.027012857,0.018865207,4.7429517E-4,0.011927606,0.019337703,0.09320819,-0.020340312,-0.0037309781,-0.03641665,0.022115048,-0.031115493,0.028142234,0.0013685054,0.039320763,-0.027473828,0.012826498,-0.018335093,0.060848076,-0.016963705,-0.014393796,0.04605093,-0.014681903,-0.080715895,-0.025975674,-0.0051887967,0.0047364696,-0.015419455,-0.0150506785,-0.0115357805,-0.042109635,-0.042893283,-0.01107481,0.034503624,0.022564495,-0.0011243 [...]
+{"input":"VComment1168231112925Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1168231112925Comment","embedding":[-0.024500519,0.03548677,0.009249713,-0.013289819,0.018629372,0.03617193,-0.022220576,0.02733568,0.007495458,0.020673051,-0.04337797,0.0015814884,0.0536318,0.0018517147,-0.020460414,0.030643368,0.039385114,-0.055474658,0.0033047348,-0.056466963,0.018700251,0.046425767,0.015073608,-6.792574E-4,-0.006633096,0.043945,0.016951902,-0.021913433,0.008086116,-0.00858227,0.0066094697,0.018085966,-0.028068097,-0.014093114,-0.029887326,-0.01836948 [...]
+{"input":"EPerson17592186045041Person_likes_CommentComment824633727481","embedding":[0.011326389,0.027399953,-0.009413693,0.040212717,0.041111454,0.064432524,-0.0038743627,9.534677E-4,-0.05719654,-0.0021532238,-0.01579703,0.01488677,0.02068247,0.03539641,-0.024818966,0.0167649,0.0054471525,0.03970574,-1.351166E-4,-0.015877686,0.021154884,-0.03864569,-0.065815195,-0.021546641,-0.0023534233,0.008854863,-0.006515843,0.03885309,0.01482916,-0.019426545,-0.020198537,-0.0075758914,0.03083359,0. [...]
+{"input":"VComment1168231116166Comment","embedding":[0.019356385,-0.010907632,-0.007236794,0.014263826,0.017969625,0.12007718,-0.021663768,-0.0016533337,-0.050715826,0.036661763,-0.043280926,-5.735684E-4,0.03668507,-0.013879263,0.009456777,0.029413315,-0.0022913602,0.039971344,-0.002891513,-0.023271946,0.05868679,0.009241188,-0.08446423,-0.026872862,0.05113535,0.032349985,-0.023283599,0.008145764,0.002415178,-0.0034785557,-0.03803687,0.008244818,-0.0049294108,0.011700067,0.0061705033,0.0 [...]
+{"input":"VComment1168231116166Comment","embedding":[0.017323393,0.03825355,-0.046341445,-0.04358719,-0.0031231293,0.053336382,-0.036876425,-0.04223192,0.002487847,-0.018919114,-0.021946609,0.006262653,0.038690735,0.036679693,0.047652997,0.007311893,0.037597775,-0.01557466,-5.3657434E-4,-0.019596748,0.018274268,-0.0027651852,-0.016492745,-0.013399673,-0.013093644,-0.06662676,-0.049226854,-0.019334437,0.01633973,0.017257817,-0.00726271,0.054254465,-0.0327669,0.08061663,-0.038209833,-0.032 [...]
+{"input":"VComment1168231116166Comment","embedding":[-0.019885778,0.002263614,-0.013647844,-0.0011522851,0.04020002,0.061194766,-0.049827863,0.0024305892,-0.016168222,-0.0047887173,0.02256998,-0.0220281,0.029942086,-0.02222973,-0.0022462865,0.05128968,0.056103602,-0.031076254,0.022708602,-0.004665849,0.0071011637,0.003011851,-0.013698252,0.024309041,-0.042317137,0.036419455,-0.022217128,0.044837516,0.04511476,0.0031189672,0.03490723,0.027522523,-0.040552873,-0.016168222,-0.029765658,-0.0 [...]
+{"input":"VComment1099511644407Comment","embedding":[0.020057704,0.031185608,-7.216108E-4,0.022599261,0.029468339,0.08728307,-0.0069663883,2.6581896E-4,-0.061775897,-0.008248616,-0.002757648,-0.017161243,0.035719197,0.019450935,0.014562442,0.0011448461,-0.0304987,0.025301099,-0.016279712,0.0024413844,0.03713881,0.0035547472,-0.095342785,-0.035238363,0.03919953,0.009175941,-0.040871006,-0.008843936,0.020046255,-0.052433953,-0.022061184,-0.016039293,0.0062165144,0.008809591,-0.011019143,0. [...]
+{"input":"VComment1099511644407Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1099511644407Comment","embedding":[0.008743942,-5.3722115E-4,-0.013201986,0.0109937405,0.015279638,0.012703351,-0.025549168,-0.024053259,0.012537139,0.010168617,0.04758414,0.017238565,-0.0018238806,2.5247165E-4,0.050433487,0.034880787,0.05670206,-0.033242412,0.030464297,-0.06420535,0.024765598,0.030108128,-0.046848055,-0.0044817897,-0.02751997,0.034928277,0.0094978325,0.020254128,0.040365785,-0.06430032,0.0052475524,0.022272415,0.004407588,-0.035854317,-0.02171442,0.039 [...]
+{"input":"VComment962072688269Comment","embedding":[0.032348335,0.042585146,0.012761896,-0.0013705957,0.025364552,0.06060194,-0.023101078,-0.0045809746,-0.029595768,0.0305967,-0.028276356,0.00582361,9.056737E-4,0.03341751,-0.05122957,0.012670902,-0.0044700755,0.040196557,-0.01433154,-0.035464875,0.07898271,0.025887765,-0.08439685,-0.0190291,-0.027866883,-4.3755272E-4,-0.016902117,0.01755045,0.0144907795,-0.017266093,-0.033235524,-0.015719198,0.031301904,0.014797884,0.005874794,0.02950477 [...]
+{"input":"VComment962072688269Comment","embedding":[0.017323393,0.03825355,-0.046341445,-0.04358719,-0.0031231293,0.053336382,-0.036876425,-0.04223192,0.002487847,-0.018919114,-0.021946609,0.006262653,0.038690735,0.036679693,0.047652997,0.007311893,0.037597775,-0.01557466,-5.3657434E-4,-0.019596748,0.018274268,-0.0027651852,-0.016492745,-0.013399673,-0.013093644,-0.06662676,-0.049226854,-0.019334437,0.01633973,0.017257817,-0.00726271,0.054254465,-0.0327669,0.08061663,-0.038209833,-0.0320 [...]
+{"input":"VComment962072688269Comment","embedding":[-0.028652553,0.018731577,-0.07487803,-0.004948419,0.022062708,0.05218772,-0.016993595,0.031838853,-0.010035635,0.012316735,0.0055820583,0.03714935,0.07787122,0.040746007,-0.006903648,0.048132427,0.023885174,0.008261446,-0.025490392,-0.088106,0.03026984,0.020119548,0.007452802,0.008840773,-0.023185154,-0.012781404,-0.010059774,-0.012383117,0.0059320685,0.016269436,-0.049363498,0.013348662,-0.029762931,0.009281303,-0.0641122,0.01637806,0. [...]
+{"input":"EComment962072691263Comment_hasCreator_PersonPerson21990232556059","embedding":[0.016911035,0.011872593,-0.007856948,0.013505583,0.014877062,0.098839484,0.0039255684,-0.019444784,-0.018979877,0.017294584,-0.011459987,-0.013900755,0.017538661,0.0092865415,-0.03661152,0.002206861,-0.024523906,0.052441645,0.0077058533,-0.0026862975,0.05899685,-0.027964227,-0.0800107,-0.008815821,-0.0015269328,0.0018421987,-0.014598117,-4.5909683E-4,-0.016899412,0.011291457,-0.038401417,-8.760614E- [...]
+{"input":"VComment1099511639173Comment","embedding":[0.0017070194,0.011104365,0.018223744,0.030644786,-0.004060725,0.075411804,-0.012013222,1.8224471E-4,-0.057933792,0.007340766,-0.029293152,-0.008808919,0.028850377,0.011518012,-0.060031153,0.0016953674,0.0063736495,0.05672198,-0.004835584,0.006216347,0.041015074,-0.037985552,-0.06846721,-0.019249119,-0.00449185,-0.015986558,-0.044976756,0.033301443,0.0052929255,-0.0027527872,-0.028337687,7.530111E-4,0.011255842,0.0055550956,0.0030703046 [...]
+{"input":"VComment1099511639173Comment","embedding":[0.017323393,0.03825355,-0.046341445,-0.04358719,-0.0031231293,0.053336382,-0.036876425,-0.04223192,0.002487847,-0.018919114,-0.021946609,0.006262653,0.038690735,0.036679693,0.047652997,0.007311893,0.037597775,-0.01557466,-5.3657434E-4,-0.019596748,0.018274268,-0.0027651852,-0.016492745,-0.013399673,-0.013093644,-0.06662676,-0.049226854,-0.019334437,0.01633973,0.017257817,-0.00726271,0.054254465,-0.0327669,0.08061663,-0.038209833,-0.032 [...]
+{"input":"VComment1099511639173Comment","embedding":[0.061633326,0.03047588,0.00741815,-0.010813825,0.031839017,-0.023514137,-0.055937357,-0.03300742,0.010692117,0.018755322,-0.03585541,-0.014385978,0.062460948,-0.030232461,-0.038581684,0.006334942,0.02689764,-0.0132540865,-0.011355429,-0.02285691,0.014264269,0.012323014,0.011489309,0.057982065,-0.027433159,0.051361106,-0.008117976,0.044131603,0.030062068,-0.0064262236,-0.03422451,0.03032983,0.0098279845,-0.030646272,-0.013899143,0.02487 [...]
+{"input":"VComment1099511639173Comment","embedding":[0.03368857,0.017271625,-0.05056847,-0.012582765,-0.0035997392,0.03323749,-0.03632383,-0.016072702,-0.015004354,0.06348361,0.010190853,0.008997864,0.029154029,0.04876415,0.0126302475,0.014755072,0.056028914,0.009282757,-0.011336359,-0.05147063,0.008991929,-0.007597141,-0.0342821,-0.023254374,-0.011686539,0.046579972,0.03366483,0.048669185,-0.014992483,0.04026485,0.001836965,0.024192147,0.040193625,-0.025901502,-0.014292122,0.035350446,- [...]
+{"input":"VPost1030792151482Post","embedding":[0.013082913,0.015022833,-0.008960583,0.016754905,0.0069225123,0.09865879,-0.019745614,-0.010819673,-0.041177113,0.040830698,-0.018140562,-0.002325306,0.02845216,0.013556346,-0.0047862907,0.03577305,-0.0081234155,0.037158705,-0.0034958976,-0.0363735,0.050068412,0.003839425,-0.07251606,0.009953638,0.052239276,0.033394337,-0.032493662,0.019710973,-0.0023859285,-0.02845216,-0.027944086,0.006968701,0.036327314,0.0048353663,-0.01204367,0.052516405 [...]
+{"input":"VPost1030792151482Post","embedding":[-0.0044527994,-0.0124317575,-0.096655,-0.046271943,0.014028096,0.03207984,-0.06993274,-0.03931803,-9.136576E-4,0.01607272,-0.011393044,0.03019922,0.028952764,0.047496527,0.018992051,0.031423807,0.037656087,-0.04824003,0.036125354,-0.009599897,0.06739609,0.043844633,-0.0304835,0.0065110917,-0.021987919,-0.046359412,-0.061491825,0.037043795,0.024491765,0.031576883,-0.0026364182,0.03640963,0.020424383,0.068620674,-5.72659E-4,0.0025325469,0.0057 [...]
+{"input":"VPost1030792151482Post","embedding":[0.037412193,-0.01485725,-0.06752445,0.020215219,-0.019875959,-0.018121166,-0.014623278,-0.035938166,-0.043261506,0.014564784,0.0076275016,0.014927442,-0.020507684,0.024075763,-0.04176408,0.013079059,-0.04234901,-0.018542316,0.010903115,0.03107154,-0.00229293,0.0382077,-0.04424419,-0.012213361,-0.011412006,-0.024309736,-0.048947036,0.025479598,0.01808607,-0.07070647,-0.004252449,0.0027257788,0.022695327,0.005366743,0.025175435,0.029152967,-0. [...]
+{"input":"VPost1030792151482Post","embedding":[-0.012331233,-0.0016299546,-0.015434416,0.04072379,0.007178069,7.785384E-4,0.00484598,0.040147036,0.029138573,-0.005162568,-0.022129769,0.04217821,-0.0103940945,-0.011046077,-0.0030248195,-0.0026439743,0.070012815,-0.011271763,-0.024888152,-0.031846806,8.251645E-4,-0.048246656,-0.007917818,-0.009992875,-0.01899524,0.011039807,0.001077494,0.011879861,0.020412046,0.026856637,-0.023107741,0.055418454,0.016562846,-0.009309548,-0.0058866437,0.002 [...]
+{"input":"VComment824633733127Comment","embedding":[0.020478161,0.035349067,0.019964162,0.027919455,0.01864412,0.07537085,-0.011839484,-0.013948046,-0.07224013,0.032895893,0.011196986,-0.017242307,0.018877756,0.030419355,0.01122619,0.01502277,-2.303501E-4,0.0047807684,-0.010770601,-0.03207817,0.048409298,-0.005367778,-0.07378212,-0.008013701,0.03018572,0.028526908,-0.016751673,0.023994377,0.04574585,-0.03904051,-0.006267275,-0.0070382725,0.027545637,0.0077274977,-0.023153288,0.025442917, [...]
+{"input":"VComment824633733127Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.0020 [...]
+{"input":"VComment824633733127Comment","embedding":[-8.0560753E-4,0.021536164,-0.07832227,0.038078792,0.042383566,0.015005209,0.009421303,-6.8914803E-4,-0.019457575,0.026984777,0.002785803,0.011493744,0.07261537,0.041817795,0.011075566,0.053182397,0.017169895,0.023627054,0.0013037312,-0.027575146,0.008627995,0.05214925,-0.002619762,0.0025275168,0.0027904154,0.029936621,-0.052838013,0.044179272,0.05618344,0.019678961,-0.001508208,-0.01214561,-0.027993323,-0.036799658,-0.03185532,0.0377590 [...]
+{"input":"VComment962072687205Comment","embedding":[0.01849514,0.041797183,-0.021070268,-0.02858964,0.006231809,0.07466726,-0.020795587,-0.018575255,0.003459255,-0.013917135,-0.019078836,0.01826624,0.0011888506,0.04761125,-0.034266368,0.005224648,-0.01447794,0.09540562,0.008297634,0.009550863,0.030993093,-0.0033734173,-0.080252424,-0.031519562,0.002290433,-0.015725447,-0.05548542,-0.012532288,-0.011410677,-0.015462211,-0.026575318,-0.0034392262,0.012188938,-0.0024463714,0.015885677,0.005 [...]
+{"input":"VComment962072687205Comment","embedding":[0.017411405,0.038232956,-0.046299256,-0.04361049,-0.0031341624,0.053294424,-0.036921363,-0.042233314,0.0024182508,-0.018876018,-0.021958264,0.006235535,0.038713872,0.036724623,0.04765457,0.007279345,0.03759902,-0.015629824,-5.178063E-4,-0.019586466,0.018253012,-0.0027229232,-0.01651515,-0.013389185,-0.013115937,-0.066628955,-0.049184762,-0.019378796,0.01632934,0.017269317,-0.00728481,0.054212537,-0.03276798,0.08061929,-0.038211096,-0.03 [...]
+{"input":"VComment962072687205Comment","embedding":[-0.004828661,0.021537652,-0.04791004,-0.028328147,0.0021516394,0.027550703,-0.0019997947,0.014965814,0.00784126,0.04535905,-0.017723313,0.021732014,0.012900726,0.029907333,-0.010762752,-0.0035258338,0.042978123,-0.0021713793,0.02105175,-0.043488324,-0.002904789,0.016204866,-0.026991913,0.006334961,-0.011139327,0.055295765,-0.020820946,0.0070273727,0.016095538,-0.010064267,-0.03974687,0.033332948,-0.001878319,-0.043609798,-0.017626133,0. [...]
+{"input":"VComment962072691263Comment","embedding":[0.016948119,0.011862521,-0.007846352,0.013484101,0.01491388,0.0988524,0.003928988,-0.019412454,-0.018947486,0.01733172,-0.011461485,-0.013937445,0.017575828,0.009270319,-0.036616307,0.002271083,-0.024503864,0.052355506,0.007712673,-0.002693914,0.059004564,-0.027967883,-0.079974666,-0.008822787,-0.0015373037,0.0018017548,-0.01461165,-4.097539E-4,-0.016843501,0.011246437,-0.03838319,-9.379296E-4,0.016924871,0.027642407,0.0067652985,0.0224 [...]
+{"input":"VComment962072691263Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301,- [...]
+{"input":"VComment962072691263Comment","embedding":[0.03529918,0.009803992,-0.007617317,-0.0012998399,0.05454672,0.0072809057,-0.028234536,-0.06531189,-9.168715E-4,-0.0030472274,-0.021037733,-0.03633244,0.02962824,0.0355635,0.027081124,0.06242836,-0.027970212,0.002275283,0.023224408,-0.046905372,0.009647801,0.025399067,-2.1626453E-4,-0.016171781,-0.055315662,0.022635687,0.00969586,0.00981,0.032752063,-0.051182605,0.019523881,0.026672626,-0.042171583,-0.016832588,-0.005767054,0.0355635,-0 [...]
+{"input":"VComment1099511644435Comment","embedding":[0.008109801,0.010268566,0.019521244,0.004484922,0.008675467,0.09341567,-0.036733646,-0.0065340176,-0.06312369,0.048624173,-0.027960055,-0.018655429,0.010603349,0.018135939,-0.029807126,-0.007088139,-0.024358263,0.054996572,0.0070477347,-0.039388813,0.060722496,0.0053161043,-0.06603283,-0.02832947,0.053380385,0.011994424,-0.030453602,0.0017431743,-0.00860043,-0.019705951,-0.025443418,-0.009933785,3.0326075E-5,-0.00824256,-0.022684354,0. [...]
+{"input":"VComment1099511644435Comment","embedding":[0.017411405,0.038232956,-0.046299256,-0.04361049,-0.0031341624,0.053294424,-0.036921363,-0.042233314,0.0024182508,-0.018876018,-0.021958264,0.006235535,0.038713872,0.036724623,0.04765457,0.007279345,0.03759902,-0.015629824,-5.178063E-4,-0.019586466,0.018253012,-0.0027229232,-0.01651515,-0.013389185,-0.013115937,-0.066628955,-0.049184762,-0.019378796,0.01632934,0.017269317,-0.00728481,0.054212537,-0.03276798,0.08061929,-0.038211096,-0.0 [...]
+{"input":"VComment1099511644435Comment","embedding":[0.04396441,0.040634505,-0.057380553,-0.0039602956,0.016359972,0.034022953,-0.0057187513,0.02823181,0.01202265,0.019882917,-0.007389737,-0.016311713,0.031127382,0.026735766,0.010164659,-0.0010277766,0.043385297,-0.021825362,0.004910405,-0.06872153,-0.0014688987,-0.028569628,0.010351664,0.006418514,-0.0012472066,0.039741702,-0.016444426,-0.04990033,0.019339997,0.014996641,0.03643593,0.03643593,-0.036725484,0.005573973,-0.041913383,-0.019 [...]
+{"input":"VComment1030792167774Comment","embedding":[-0.0073263356,-0.0023257057,-0.01646107,0.0049933847,0.02084296,0.102197744,-0.022407921,-0.013516625,-0.060743667,-0.006312009,-0.024390206,-0.014246941,0.04590552,0.019451885,-0.05833247,-0.0014649773,-0.015777124,0.054437455,-7.404584E-4,0.018999785,0.056384962,-0.012009626,-0.08031148,2.8473596E-4,-0.01087358,-0.018814309,-0.037582245,0.05007875,-0.012647202,0.02450613,-0.042172797,0.02144576,0.019938761,0.041338153,0.0073263356,0. [...]
+{"input":"VComment1030792167774Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1030792167774Comment","embedding":[0.013626023,-0.0020053685,-0.021394707,0.015919635,0.028657809,0.023823962,-0.059091315,-0.020223238,-8.670405E-5,-0.01656086,0.036944404,0.015525035,0.06481301,-0.0074049113,0.029619645,0.042937387,0.02796726,-0.013712342,0.05277772,-0.045896888,2.2485251E-4,0.030433508,-0.024243224,-0.01765834,-0.012275753,0.03800489,-0.015463378,0.01974232,0.06673668,-0.008070799,0.005906665,-0.0018019029,-0.040150527,0.0065232273,-0.022689488,0.055 [...]
+{"input":"VComment893353214311Comment","embedding":[0.010604339,0.0072024027,-0.026337575,0.032621626,0.026614811,0.10997093,-0.003745596,-0.0109393345,-0.05484684,-0.0071157655,-0.008236268,0.016368572,0.043202862,0.00443869,0.002756493,0.027908588,0.0011732061,0.028902022,-0.014416357,0.016761325,0.04488939,-0.010269344,-0.058404725,0.013908087,0.008831173,0.009252805,-0.041885983,0.009634008,-0.0029745286,-0.04415009,-0.006312932,-0.0075547253,0.028694093,0.032090254,0.017119423,0.027 [...]
+{"input":"VComment893353214311Comment","embedding":[-0.0044666636,-0.01242137,-0.09674673,-0.046273977,0.014006844,0.032059383,-0.06993581,-0.03934163,-9.116476E-4,0.016095296,-0.011426348,0.030200548,0.028997775,0.047454882,0.01894915,0.03144706,0.037657745,-0.048329625,0.036105074,-0.009600319,0.067399055,0.043846563,-0.03050671,0.006533247,-0.021956084,-0.04640519,-0.061538268,0.037067294,0.024449104,0.03160014,-0.002611932,0.036411233,0.020458084,0.06857996,-5.3168053E-4,0.0025148902 [...]
+{"input":"VComment893353214311Comment","embedding":[0.011734887,-0.0037833788,-0.06832234,0.022956774,0.039944086,0.0060102674,-0.04626332,0.006820575,-0.05428478,0.008639395,0.010464044,0.03453426,0.02795853,0.03479076,-0.01859627,0.04481759,-0.013291377,-0.004109834,-0.046449866,-0.04129654,0.023539728,0.0042759757,-0.054797783,0.019272497,-0.017045608,0.003028452,-0.013314695,0.02898453,-0.009268987,-0.007572587,-6.008081E-4,0.02558007,0.0100326575,0.028354937,-0.009111589,0.006336722 [...]
+{"input":"VComment824633735041Comment","embedding":[0.016664369,-0.0062000426,0.012759183,0.005919498,0.02823404,0.06032838,0.0039809323,-0.023902427,-0.052428234,-0.0022120967,-0.033261407,0.014622001,0.009201873,0.02448596,-0.019256603,0.020131903,-0.0043624733,0.024463518,-0.01930149,-0.0011277905,0.04253061,-0.010189392,-0.07213371,-0.006531086,0.007153895,0.011592116,-0.01224298,0.039253846,0.003815411,-0.016944913,-0.027874943,-0.011704334,0.025271486,0.02841359,0.0033693444,0.0336 [...]
+{"input":"VComment824633735041Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.0020 [...]
+{"input":"VComment824633735041Comment","embedding":[0.015658265,0.018146027,-0.05351127,-0.031901885,0.007408408,0.020304525,-0.014060732,0.001147846,0.03531646,-0.0010129397,0.01696312,-0.005731608,0.044706542,0.01428024,-0.027706837,0.056779504,0.033121377,0.016950926,0.0038200556,-0.043365102,0.006396231,0.030267768,-0.03143848,0.054096624,-0.03397502,0.03697497,0.008066934,0.0106217675,-0.0012141558,-0.009725441,-0.017646035,0.039340783,-0.01696312,-0.008451073,-0.042974863,0.0223288 [...]
+{"input":"EPost1030792151482Post_isLocatedIn_CountryCountry92","embedding":[0.013082913,0.015022833,-0.008960583,0.016754905,0.0069225123,0.09865879,-0.019745614,-0.010819673,-0.041177113,0.040830698,-0.018140562,-0.002325306,0.02845216,0.013556346,-0.0047862907,0.03577305,-0.0081234155,0.037158705,-0.0034958976,-0.0363735,0.050068412,0.003839425,-0.07251606,0.009953638,0.052239276,0.033394337,-0.032493662,0.019710973,-0.0023859285,-0.02845216,-0.027944086,0.006968701,0.036327314,0.00483 [...]
+{"input":"VComment1099511641974Comment","embedding":[0.019708198,-0.0152894715,0.0011841957,0.030238168,0.017947523,0.037008245,-0.033236995,0.0051599126,-0.087556645,-0.012279286,-0.02767099,-0.014948696,-0.0020588534,-0.0020389748,-0.027511962,0.007639056,0.0011813559,0.023808865,-0.0121316165,-0.028057203,0.052797522,-0.029761082,-0.05293383,-0.017584028,-0.0016115853,3.7449834E-4,-0.015062287,0.004972486,-0.028125359,-0.0046033124,-0.03889387,0.0017876527,0.010774193,0.024672164,-0.0 [...]
+{"input":"VComment1099511641974Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1099511641974Comment","embedding":[-0.008452445,0.02611224,-0.019788375,-0.04378441,0.0064476193,0.0062341425,-0.055244092,-0.00844007,0.048610844,0.027127028,-0.019862628,-0.027943809,0.048610844,0.01439267,0.011781447,0.047843564,0.04031928,-0.03564135,-0.02692902,-0.049452376,0.012350718,0.012134147,-0.016347995,-0.011781447,-0.015716845,0.010964666,-0.039230235,0.048635595,0.039254986,-0.015939604,-0.024453927,-0.0016428435,0.045417972,0.016459374,-0.056927156,0.014 [...]
+{"input":"VComment1168231116518Comment","embedding":[0.012010903,-0.008426164,-0.02339636,-0.014373704,0.0359053,0.11156125,-0.021323116,0.0034689156,-0.056058604,0.049989447,-0.034330104,0.0044649984,0.04257674,0.010186682,-0.018126387,0.03803646,-0.0062370985,0.030507926,0.009555443,-0.018149551,0.061247498,0.007800717,-0.09233454,-0.01671334,0.034909222,0.01887924,-0.045055363,0.02001431,-0.0019067454,-0.013597686,-0.048599564,0.007997617,0.01725771,0.023419524,0.006225516,0.027797654 [...]
+{"input":"VComment1168231116518Comment","embedding":[0.019805139,0.016049936,-0.05259474,-0.010800315,0.03030438,-0.008698277,-0.0412306,-0.03720169,-0.042719543,7.068376E-4,0.031333502,0.011156129,0.023472758,0.0021088806,-0.03917235,-0.021611577,0.030917475,-0.015830973,0.029165776,0.023713615,0.029581806,-0.009355164,-0.03553758,-0.0039413213,0.014484355,-0.01741845,-0.0051374026,0.012874982,0.00801402,0.026888568,0.0098368805,0.040770777,-0.034048636,0.0143748745,-0.0476024,0.0021814 [...]
+{"input":"VComment1168231116518Comment","embedding":[0.009002817,-0.0015933419,-0.061156467,-0.0029951346,0.0068493388,-0.007917372,-0.023032352,-0.022730518,0.012247547,-0.036034487,-0.009757405,-0.01780828,0.07262621,0.018655742,-0.0016252669,0.024425438,0.01928263,-0.015579344,0.024193257,-0.079963125,-0.0125726,0.061342213,-0.012270764,-0.008497824,-0.0117889885,0.0153007265,0.015765088,0.01952642,0.018864704,-0.009426547,-0.025168417,0.02098916,-0.01622945,-0.0451592,0.001549808,0.0 [...]
+{"input":"VComment755914257790Comment","embedding":[0.009359707,0.0054053455,-0.007375357,0.021334626,0.03163489,0.073088296,-0.03656709,-0.019900847,-0.06900489,0.029937297,-0.030625511,0.024936277,0.04223338,0.017193872,0.007105807,0.028492048,0.008637083,0.051478386,-0.015220994,0.026243884,0.009376912,-0.03601652,-0.04863377,-0.018375307,-0.0070427204,-0.0067215543,-0.03961817,0.011682428,-2.985844E-4,-0.031382546,-0.020256424,0.009302355,0.004243985,0.034800675,0.025119802,0.0165630 [...]
+{"input":"VComment755914257790Comment","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062,0 [...]
+{"input":"VComment755914257790Comment","embedding":[-0.019552726,-0.005928735,-0.020859467,0.03670976,0.03624998,0.046655513,-0.004761137,0.029256493,0.009213738,-7.615097E-4,0.04164634,-0.006866443,0.040629983,0.019274438,-0.041743133,0.031071411,0.051156513,-0.004785336,0.041960925,-0.017834602,-0.01610438,-0.0051785684,0.024924885,0.0077013057,-0.02055698,-0.020726373,0.022722784,0.029353287,0.02190002,-0.023896432,-0.006061829,0.066111445,-0.026134832,0.037000146,-0.036588766,0.02482 [...]
+{"input":"EComment1099511645848Comment_hasCreator_PersonPerson26388279067480","embedding":[0.0030544694,-8.154995E-4,0.00802054,0.012825849,-0.0040424224,0.05060189,-0.027779596,-0.0087921955,-0.070852,-0.0039255046,-0.03121697,-0.032526445,0.034186672,0.023231504,-0.0113234585,0.014182092,-0.0014373544,0.025581546,-0.016543824,0.032128926,0.044615716,-0.0070852,-0.055512425,-0.0088565,-0.027148241,-0.019677214,-0.008698661,0.01691796,0.0031480035,0.020624245,-0.03456081,-0.008043923,0.0 [...]
+{"input":"VComment1168231116585Comment","embedding":[0.046026167,0.016261501,0.0013373325,0.017069383,0.017288664,0.0782491,-0.022228284,-0.017911889,-0.04249457,0.020520192,-0.032638416,0.013364669,0.0019259319,0.00242653,-0.023636306,0.007449822,-0.023532435,0.048703715,-0.016134549,-0.0093656555,0.040555652,-0.0035893023,-0.07035494,-0.007201687,0.0099715665,0.0168501,-0.036216177,0.014137927,0.003427726,-0.03940154,-0.02497508,0.011021812,0.0014491375,0.020612521,0.018281205,0.047087 [...]
+{"input":"VComment1168231116585Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1168231116585Comment","embedding":[0.011146902,-0.027713291,-0.06266899,0.0315562,0.05222416,0.023082092,-0.010389405,0.013745792,-0.026013544,0.046114918,-0.008677339,-0.005302476,0.018647965,-0.022256853,0.028353777,0.03446302,0.016036758,-0.033970337,0.050696846,-0.064491905,0.033083513,0.021185271,-0.002432611,-0.031901076,-0.016147612,0.060205586,-0.021579416,0.024818793,0.07060115,-0.037690077,-0.020544786,0.05212562,-0.021074418,-0.03904495,-0.044390533,0.0096688 [...]
+{"input":"VComment1099511639297Comment","embedding":[-0.015919603,0.008927648,0.012318042,0.029281745,0.010968923,0.07067037,-0.033082742,-0.006117961,-0.082871094,0.027850507,-0.038479216,-0.019051906,0.02356852,0.02963369,-0.018629571,0.013033661,-0.018864201,0.04115399,-0.0016570699,0.0012369367,0.059783563,0.020741235,-0.058516566,-0.03676642,0.058188085,0.0038537874,-0.0343732,0.026583508,-0.020096006,-0.024542233,-0.034819,-0.0018579713,0.022852901,-0.022712123,-0.0064757704,0.0233 [...]
+{"input":"VComment1099511639297Comment","embedding":[0.017323393,0.03825355,-0.046341445,-0.04358719,-0.0031231293,0.053336382,-0.036876425,-0.04223192,0.002487847,-0.018919114,-0.021946609,0.006262653,0.038690735,0.036679693,0.047652997,0.007311893,0.037597775,-0.01557466,-5.3657434E-4,-0.019596748,0.018274268,-0.0027651852,-0.016492745,-0.013399673,-0.013093644,-0.06662676,-0.049226854,-0.019334437,0.01633973,0.017257817,-0.00726271,0.054254465,-0.0327669,0.08061663,-0.038209833,-0.032 [...]
+{"input":"VComment1099511639297Comment","embedding":[0.0025088354,0.0015952133,-0.049654637,0.00883007,0.020302715,0.037846837,-0.05174292,0.0046696244,-0.01958084,0.038001526,-0.017750373,-0.009287686,0.023615602,-0.0074894456,0.025600756,0.048314016,0.01768592,0.023280445,0.019928886,-0.0018353009,0.040734336,0.009816201,-0.0039799763,-0.015198031,0.003335446,0.026258176,-0.033335123,0.027147628,0.03390231,-0.01621639,0.005862006,0.007012493,-0.027302317,-0.0058652284,-0.04524605,0.029 [...]
+{"input":"VComment962072691272Comment","embedding":[0.019333037,0.003984562,-0.0031473723,0.022819888,0.0030092793,0.04455805,-0.02718133,-0.014373193,-0.041796185,-9.263747E-4,-0.036571663,0.041059688,0.025340088,-0.008210787,-0.009827627,0.017906075,0.0049109366,0.04828656,-0.017181085,0.004062239,0.066652946,-0.00768143,-0.035006605,-0.025086917,0.004407472,0.020610398,-0.028378136,0.04135889,-0.033050288,0.01644459,-0.040714454,-0.022267515,0.01916042,0.025754368,0.009039345,0.009401 [...]
+{"input":"VComment962072691272Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301,- [...]
+{"input":"VComment962072691272Comment","embedding":[0.0028185092,-0.010816981,-0.039172705,0.038612053,0.017721567,0.044316106,-0.040050253,-0.021219565,-0.015649581,0.021073308,0.044437986,0.018391915,0.07878418,0.0145160835,0.033395525,0.034565587,0.04724126,-0.025765743,0.021231754,-0.06625477,-0.0029525787,0.03607692,-0.003534563,-0.010859639,-0.024656622,0.02487601,-0.016892772,0.008117306,0.08775466,-0.04480363,0.034516834,0.012285653,-0.018916005,-0.011194814,-0.014369826,0.054261 [...]
+{"input":"VComment1168231117827Comment","embedding":[0.020861749,0.0032744731,-0.046074033,0.031657096,0.04896668,0.09978465,-0.019218726,-0.0010493066,-0.05040143,0.025825527,-0.007688648,0.012970616,0.013132604,0.032004215,-0.006005129,0.046883974,-0.03591507,0.037396103,-0.007353101,0.015805406,0.044916976,-0.012692922,-0.062249698,-0.020919602,0.023141153,-0.011101968,-0.01244994,0.017517852,-0.020965884,-0.03371666,-0.005238578,0.009788708,0.039501946,0.0014296893,-0.0019149303,0.02 [...]
+{"input":"VComment1168231117827Comment","embedding":[0.017411405,0.038232956,-0.046299256,-0.04361049,-0.0031341624,0.053294424,-0.036921363,-0.042233314,0.0024182508,-0.018876018,-0.021958264,0.006235535,0.038713872,0.036724623,0.04765457,0.007279345,0.03759902,-0.015629824,-5.178063E-4,-0.019586466,0.018253012,-0.0027229232,-0.01651515,-0.013389185,-0.013115937,-0.066628955,-0.049184762,-0.019378796,0.01632934,0.017269317,-0.00728481,0.054212537,-0.03276798,0.08061929,-0.038211096,-0.0 [...]
+{"input":"VComment1168231117827Comment","embedding":[-0.0015062768,-0.01999267,-0.06315974,0.0030511378,0.030107725,0.02694974,-0.029822795,-2.691635E-4,-0.036803607,0.034999046,0.006737435,0.0011946333,0.034334205,0.013831033,0.03725475,0.031318683,-0.02216527,-0.05869582,0.0080493055,-0.010423732,0.05541911,0.021797234,8.3327526E-4,0.045707706,-0.020740615,-0.0056362944,0.008951588,-0.016894044,0.029490376,-0.035450187,0.04233602,0.041576207,0.0056273905,0.020740615,-0.0337406,0.008458 [...]
+{"input":"VComment1099511641105Comment","embedding":[-7.284842E-4,0.004898292,0.018188722,0.03386786,0.033200175,0.091726415,-0.023461148,-0.004495377,-0.06345331,0.07211022,-0.022068216,-0.017762784,0.006245178,0.027167965,0.008133122,0.020767376,0.0027916234,0.03179573,-0.007246709,-0.01786639,0.048349768,-0.039002147,-0.067873865,-0.054750353,0.009940482,0.018718267,-0.017141143,0.014366788,-0.0014353837,-0.022804974,-0.02097459,0.00992897,0.018407447,0.01537983,-0.008397894,0.0319108 [...]
+{"input":"VComment1099511641105Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1099511641105Comment","embedding":[-0.027523445,0.00921315,-0.07096995,0.018926948,0.0065084277,0.04000302,-0.017254049,-0.028475897,-0.015068293,0.030380804,-0.015104925,-0.0043348814,0.036779333,0.023628157,0.024666088,0.027865352,0.043886095,-0.014982816,-0.020477736,0.003977712,-0.03577804,-0.0176448,0.015129347,-0.01280927,0.025276633,0.0065145334,-0.06833239,0.040222816,-0.02991679,-0.010348767,0.013407606,0.010238868,0.011905661,0.017205207,0.020905118,0.01587421 [...]
+{"input":"EComment1099511646167Comment_hasCreator_PersonPerson24189255812167","embedding":[0.011963316,0.009561503,0.007268344,0.017327366,-0.0068623233,0.06706777,-0.023606392,0.016229395,-0.047121286,0.017944975,-0.021090206,0.0031966988,0.019569058,0.01719012,-0.04202029,-0.020369662,0.0011658801,0.04730428,-0.017796291,-0.0016054977,0.06446009,-0.021376137,-0.07255763,-0.0048350785,0.028387142,5.4112275E-4,0.0041717207,0.0024461322,-0.03138369,0.010264891,-0.04218041,-0.0080403555,0. [...]
+{"input":"EComment962072685659Comment_hasCreator_PersonPerson19791209300191","embedding":[-0.013252189,5.8327295E-4,-0.036964834,0.01585021,-0.010927644,0.07228881,-0.012078522,0.0071559544,-0.05756669,-0.0117594665,-0.013320559,0.011617031,0.03170042,0.0054011503,-0.010939038,0.0033329884,-0.0023402136,0.030333042,-0.011070079,-0.0016380071,0.063446425,-0.012272234,-0.06253484,-0.020032113,0.030993942,-0.0024456158,-0.061395355,0.021228572,8.8096294E-4,-0.0051048845,-0.032817114,-0.0042 [...]
+{"input":"VComment1099511645848Comment","embedding":[0.0030544694,-8.154995E-4,0.00802054,0.012825849,-0.0040424224,0.05060189,-0.027779596,-0.0087921955,-0.070852,-0.0039255046,-0.03121697,-0.032526445,0.034186672,0.023231504,-0.0113234585,0.014182092,-0.0014373544,0.025581546,-0.016543824,0.032128926,0.044615716,-0.0070852,-0.055512425,-0.0088565,-0.027148241,-0.019677214,-0.008698661,0.01691796,0.0031480035,0.020624245,-0.03456081,-0.008043923,0.028761704,0.047234666,-0.012311412,0.02 [...]
+{"input":"VComment1099511645848Comment","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301, [...]
+{"input":"VComment1099511645848Comment","embedding":[-0.010153282,0.018608496,-0.014732214,0.011447328,0.0073778178,0.016184356,-0.0094682,-0.008355672,0.035436947,0.048763864,0.019346278,-0.024545884,0.028808622,0.033141628,-0.02463957,0.050075475,0.034687456,0.017835582,0.021430803,-0.059912566,-0.004087077,0.01821033,-0.049934946,-0.0034664033,-0.010030319,-0.0032585363,5.079569E-4,-0.039254677,0.046234325,-0.031572375,0.009029044,0.04984126,-0.01667621,0.014825901,-0.01496643,0.02887 [...]
+{"input":"VComment1030792164752Comment","embedding":[-0.0041976837,0.04827194,0.0069251843,-0.010637538,0.03017564,0.0612595,-0.026996866,0.010739712,-0.072294384,0.0049270983,-0.0046773376,-0.029993996,0.04918016,0.021524835,-0.04118782,0.030743277,-0.035920136,0.03255972,-0.01780113,0.0077596125,0.029403651,-0.012102043,-0.0748374,-0.0053897235,0.020389559,-0.020605262,-0.045774333,0.041619223,0.034398865,-0.0068797735,-0.031878553,-0.011591169,0.01632527,0.05294928,-0.007231709,0.0576 [...]
+{"input":"VComment1030792164752Comment","embedding":[0.007979992,-0.006506678,-0.05590923,-0.027275467,-0.0019977363,0.033146814,-0.03481182,-0.018161738,-0.046970766,-0.025435196,-0.01907092,1.3144803E-4,0.024098808,0.011140222,0.034329847,0.048285246,0.01923523,0.005685128,0.01079517,-0.026180068,0.031832334,0.029707257,0.0043076617,-0.03805421,-0.025851447,-0.022335213,0.0033163244,0.01570804,-0.026530595,0.004942994,0.02383591,0.028918568,0.025763815,0.019739114,0.02418644,0.01184127 [...]
+{"input":"VComment1030792164752Comment","embedding":[-0.019310901,0.020185402,-0.05505763,0.0017025818,-0.023347981,0.023970913,-0.04271878,0.005016402,-0.01933486,0.004986453,-0.013596695,-0.01596863,0.040969778,0.003905306,-0.0076428996,0.036106113,0.069768414,-0.029589282,0.02089219,-0.034620658,-0.012818029,0.019682264,0.01840046,-0.008020253,-0.023443816,0.043629218,-0.012494584,0.05141587,0.007007988,-0.026258992,0.036489457,0.05098461,-0.011763836,-0.030667435,-0.032512274,0.01788 [...]
+{"input":"VComment1099511646167Comment","embedding":[0.011963468,0.009533031,0.0072341235,0.017316148,-0.006805223,0.06702287,-0.023675313,0.016206725,-0.047076132,0.017956639,-0.021044724,0.0031995985,0.019603617,0.017178899,-0.041997947,-0.02027842,0.0012023514,0.04716763,-0.017796516,-0.0016040883,0.06441516,-0.02131922,-0.072558545,-0.0048522954,0.028387502,4.5284757E-4,0.004177492,0.002464749,-0.031475585,0.010327927,-0.04220382,-0.008006145,0.022668827,0.010133492,-0.0028836417,0.0 [...]
+{"input":"VComment1099511646167Comment","embedding":[-0.0044527994,-0.0124317575,-0.096655,-0.046271943,0.014028096,0.03207984,-0.06993274,-0.03931803,-9.136576E-4,0.01607272,-0.011393044,0.03019922,0.028952764,0.047496527,0.018992051,0.031423807,0.037656087,-0.04824003,0.036125354,-0.009599897,0.06739609,0.043844633,-0.0304835,0.0065110917,-0.021987919,-0.046359412,-0.061491825,0.037043795,0.024491765,0.031576883,-0.0026364182,0.03640963,0.020424383,0.068620674,-5.72659E-4,0.0025325469, [...]
+{"input":"VComment1099511646167Comment","embedding":[0.02176251,0.043501683,-0.027141877,-0.04746911,-0.03040917,-0.001885987,-0.013430911,-0.0115988925,0.046909004,-0.012404047,-0.035053395,-0.02529819,0.002666345,0.0018684836,0.012497398,0.0057731913,0.049009405,0.018973641,-0.015216254,0.0210157,-5.364392E-6,0.023011083,0.011097129,0.05138986,-0.021225741,0.011009613,-0.009148423,-0.01311585,0.016394813,0.018728595,-0.022427637,-0.009154256,-0.028518807,0.040281065,-0.03379315,0.00992 [...]
+{"input":"VComment1099511640827Comment","embedding":[0.022200849,0.004516264,0.008625919,0.016531559,0.03554924,0.08257647,-0.022247318,-0.0219685,-0.049397178,0.04270556,-0.03094875,0.0043797595,0.014266166,0.022526136,-0.0040457593,0.024698589,-0.0053846645,0.051023614,-0.012384147,0.007539692,0.058969915,-0.009305537,-0.078812435,-0.027347356,-0.0017803664,0.0069820564,-0.023838902,-8.052309E-4,-5.779656E-4,-0.021515422,-0.010740285,-0.011315347,0.017925646,0.030809341,0.011890408,0.0 [...]
+{"input":"VComment1099511640827Comment","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002 [...]
+{"input":"VComment1099511640827Comment","embedding":[-0.058656037,0.022986488,-0.041936327,-0.033588927,0.006852341,0.019871788,0.010309658,-0.008515591,-0.005092535,0.024282204,-0.0021475859,-0.016482994,0.026612,-0.01912426,-9.912534E-4,0.019722283,0.07918814,-0.00446648,0.010558834,-0.03239288,0.042260256,-0.0015698089,-0.0100978585,-0.017018722,-0.022936653,0.070167966,-0.00893296,0.044004485,0.026263153,0.0050831907,-0.027409364,0.026213318,-0.027932633,-0.01206012,-0.016669877,0.06 [...]
+{"input":"VComment1099511640827Comment","embedding":[0.04455069,-0.019497048,-0.025482018,-9.064658E-4,0.019386895,0.01854239,-0.022385499,-0.02024364,0.0068845507,3.241476E-4,-0.01485839,0.007416956,0.05164943,0.025029166,-0.019178828,0.0062848297,0.020941272,-0.027807465,-0.0035157106,0.0080411555,-0.023034176,0.0040052785,-0.033486456,0.009607773,0.008249221,0.034881722,-0.025237232,0.0044734282,0.0112784235,-0.013463121,0.011364099,0.033829153,-0.004259242,-0.032409403,0.043253336,0. [...]
+{"input":"VComment962072693521Comment","embedding":[-0.010814623,0.027972888,0.017965851,-0.01227764,0.026544983,0.06779036,-0.028885812,0.010808771,-0.06292144,0.018668098,-0.03433994,0.006378755,0.028043114,0.03143731,-0.027574947,0.03651691,0.0032859365,0.05575851,-0.017638136,0.012008444,0.045973852,0.0032157118,-0.048080597,-0.0033005667,-1.8516311E-4,-0.016608171,-0.05725664,0.01832868,0.012488315,-0.011557835,-0.04126879,-0.018902183,0.0407304,0.07467239,0.0062734177,0.03052439,-0 [...]
+{"input":"VComment962072693521Comment","embedding":[0.017323393,0.03825355,-0.046341445,-0.04358719,-0.0031231293,0.053336382,-0.036876425,-0.04223192,0.002487847,-0.018919114,-0.021946609,0.006262653,0.038690735,0.036679693,0.047652997,0.007311893,0.037597775,-0.01557466,-5.3657434E-4,-0.019596748,0.018274268,-0.0027651852,-0.016492745,-0.013399673,-0.013093644,-0.06662676,-0.049226854,-0.019334437,0.01633973,0.017257817,-0.00726271,0.054254465,-0.0327669,0.08061663,-0.038209833,-0.0320 [...]
+{"input":"VComment962072693521Comment","embedding":[0.0067774826,-0.013055212,0.0010422947,-0.0183882,0.008810728,0.032449767,-0.02238623,0.032394998,0.025973504,0.0018312895,0.021893322,-0.015403369,0.038748033,0.002332755,0.020784281,0.044115253,0.07481246,0.0056479024,0.005113919,-0.020839049,0.01253492,0.0408292,-0.016293343,-0.011473799,-0.014937846,0.05057782,0.012719761,0.055698585,0.010385294,0.01319213,0.007948139,0.017060088,-0.01165864,0.019880615,-0.01751192,-0.019675238,-0.0 [...]
+{"input":"VComment962072693521Comment","embedding":[0.07534854,0.017334934,-0.032118507,0.011087681,-0.029757906,0.03419298,-0.051647134,-0.0069864313,-0.015391609,0.04086943,-0.026419679,0.045566794,0.032142352,-0.006700298,0.017513767,0.027468836,-0.031069351,0.0013412518,-0.016428843,-0.034622177,-0.019838603,-3.4891174E-4,-0.027373457,0.021376573,0.02813648,0.02392793,0.00937684,-0.009639129,0.041942433,-0.013376751,0.006682414,0.016440766,-0.020732772,0.020482404,-0.031236263,0.0467 [...]
+{"input":"EPerson21990232556059Person_likes_CommentComment962072691272","embedding":[0.00938745,0.051337436,-0.0143456515,0.02787753,0.029900337,0.032643914,-0.029505074,-0.005998668,-0.052360464,0.010863867,-0.011038246,-0.0024282397,4.519345E-4,0.026924253,-0.030179344,0.01395039,-0.02108834,0.063520774,-0.0044466867,0.008538801,0.05505754,-0.009091004,-0.06863592,-0.051011927,-0.005827194,-0.01322962,-0.041665167,0.020762831,0.031062867,-0.030109592,-0.01787975,2.5248752E-4,0.01819363 [...]
+{"input":"VComment1030792167527Comment","embedding":[0.049349487,0.03316449,0.013109167,0.0055898395,0.028374821,0.077860504,-0.030213509,0.018352835,-0.07250334,0.035366375,-0.005232317,-0.03641057,0.023948349,0.043629125,-0.012859468,0.006741857,-0.0033141791,0.03981555,-0.018386884,-0.013529114,0.06410439,-0.0059360126,-0.10178616,-0.01026601,0.049485687,0.008966443,0.0019153004,0.0039043752,0.015220254,0.0050705806,-0.0315074,-0.028193222,0.015254304,0.005879263,-0.036909968,0.032755 [...]
+{"input":"VComment1030792167527Comment","embedding":[0.017411405,0.038232956,-0.046299256,-0.04361049,-0.0031341624,0.053294424,-0.036921363,-0.042233314,0.0024182508,-0.018876018,-0.021958264,0.006235535,0.038713872,0.036724623,0.04765457,0.007279345,0.03759902,-0.015629824,-5.178063E-4,-0.019586466,0.018253012,-0.0027229232,-0.01651515,-0.013389185,-0.013115937,-0.066628955,-0.049184762,-0.019378796,0.01632934,0.017269317,-0.00728481,0.054212537,-0.03276798,0.08061929,-0.038211096,-0.0 [...]
+{"input":"VComment1030792167527Comment","embedding":[0.025415173,0.041595254,-0.054215714,0.003933004,0.033554997,0.05924399,-0.023100177,0.01407667,-0.0029855361,0.0055759046,0.0014056445,0.038110312,0.009670709,0.040599555,-0.0029559762,0.054315288,0.013441913,0.018768894,0.02999538,-0.028252909,0.014163794,-0.0036778569,-0.03694037,0.0075299605,0.012676471,0.03153871,-0.004763789,0.03860816,0.045304224,0.009160415,0.036666553,0.03992746,-0.035894886,-0.018482631,-0.02200491,0.01940365 [...]
+{"input":"VPost893353201396Post","embedding":[0.04075301,0.021337444,0.019623965,0.02244889,0.03061107,0.0633061,-0.022749906,-0.006790239,-0.07090098,0.03577466,-0.012387989,-0.012897402,0.011010259,0.019948136,-0.016150696,0.01143863,-0.026118975,0.03378332,-0.009233104,-0.01917244,0.04570821,0.023050923,-0.09229631,-0.019010354,0.002694677,0.0066397307,-0.0131521085,-0.0046975953,0.018280968,-0.027415663,-0.029476468,-0.02500753,0.0036527202,0.03146781,0.007583302,0.048949923,-0.01272 [...]
+{"input":"VPost893353201396Post","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.0020301493 [...]
+{"input":"VPost893353201396Post","embedding":[0.03781359,0.013956364,-0.04069096,0.028479138,0.0060549323,0.05700359,0.0014308955,-0.0320362,-0.025307238,0.011260249,-0.021852132,0.028184606,0.031809635,0.022837687,-0.056595776,-0.014035662,0.024219729,0.0021282888,0.01039364,-0.03502685,0.015859505,0.016527869,-0.008037371,0.013820426,-0.011379194,-0.03038228,0.015655598,0.021263065,-0.03711124,0.032942455,-0.03393934,0.013650502,-1.6381664E-4,0.017264204,0.0023279488,0.008439522,0.0028 [...]
+{"input":"VPost893353201396Post","embedding":[-0.019339694,0.017411567,-0.020660168,0.012363381,0.039380524,0.020356342,-0.0016798072,-0.002180828,-0.013894197,-0.0060239346,0.043587346,-0.013204745,0.03949738,-0.02923741,-0.0068185567,0.022868749,0.024539793,-0.02449305,0.010645595,-0.007291824,0.04136708,-0.016196262,-0.020566683,0.012445181,-0.009348492,0.10732069,-0.013648799,0.023838656,0.027998734,-0.007975432,-0.026199149,0.014618705,-0.02846616,-0.050248146,-0.039450638,0.0308032 [...]
+{"input":"VPost893353201396Post","embedding":[0.016375083,-0.03025938,-0.0075833406,-0.0046763937,-0.004195499,-0.0010588933,0.021985523,-0.034007892,0.00824303,0.009143166,-0.005730663,0.027595961,0.00766349,0.0034186686,-0.020333217,0.02230612,-0.0027250703,-0.036202747,0.009944658,-0.026510866,0.0043496317,0.034821715,0.010000145,0.0054809675,-0.036449358,-0.009679548,-0.0048151133,-0.009852177,0.023045957,0.042614676,-0.010801637,0.045943946,-0.022022516,-0.01940842,0.02890301,0.0018 [...]
+{"input":"VPost137438965532Post","embedding":[-0.0045389156,-0.026283355,0.0046648374,-0.012512067,-0.024428867,0.026420724,-0.04388954,9.810826E-5,-0.07495793,-0.015030507,-0.019185932,-0.0018802444,0.045606658,0.023490176,-0.025321769,-0.008453945,-0.011338703,0.041691627,-0.025550717,0.0023596066,0.048445627,0.023329912,-0.07523267,8.256476E-4,-0.013954447,-0.007206172,-0.04931563,0.03940214,0.015797487,-0.001677052,-0.042241108,-0.011041069,0.017319998,0.059023075,-0.021601345,0.0221 [...]
+{"input":"VPost137438965532Post","embedding":[-0.043837182,-0.01478703,-0.06868538,-0.02908223,-0.02968098,0.016946813,-0.06282617,-0.019149365,0.008232837,-0.033123802,-0.011440435,0.024548823,4.888247E-4,8.627104E-4,0.03477037,0.03861949,0.032974117,-0.04210508,0.015877614,-0.025575254,0.023800382,0.017149962,-0.039923914,-0.008002959,-0.014337967,-0.05431534,-0.060516696,-0.013450531,-0.011878808,-0.02437775,-0.01922421,0.044521473,-0.019512894,0.045718975,0.004597558,-0.0019927209,0. [...]
+{"input":"VPost137438965532Post","embedding":[0.054695517,0.0029698801,-0.05115004,0.025639875,0.026742432,0.034309007,-0.03530347,-0.04613448,-0.006037045,0.01595466,-0.028644886,0.0065775146,0.023499615,-0.03331454,-0.04449145,0.03997313,0.023845516,-0.0055398126,-0.0043588867,-0.012182184,-0.053009253,0.018657008,0.013933305,0.010014901,0.037724774,-0.036103364,-0.00585869,-0.009355528,0.037162688,0.0014241373,-0.003885976,-0.035952035,0.013209076,0.030417627,-0.022018729,0.03225522,0 [...]
+{"input":"VPost137438965532Post","embedding":[-0.053303,0.025717221,-0.039559282,-0.009570199,0.0066997544,0.015956478,4.1950296E-4,-0.03557631,0.00953332,-0.010418425,0.019669004,0.013104473,0.032798063,-0.015169718,0.027929984,6.85726E-4,0.032011304,-0.031593338,0.05645004,-0.07665994,-0.0108425375,0.05271293,0.01654655,0.018095482,-0.01836593,-0.006447745,-0.040149353,-0.036313895,0.047943193,0.011408022,-0.036043447,0.031593338,-0.011936626,-0.041034456,-0.024463322,0.041009873,1.576 [...]
+{"input":"EPost1030792151482Post_hasCreator_PersonPerson27","embedding":[0.0130711505,0.01504568,-0.008971983,0.016719988,0.0069454922,0.09865717,-0.019768383,-0.010836815,-0.04115334,0.040876213,-0.01818645,-0.0023570217,0.02849788,0.013533029,-0.004817966,0.03584174,-0.008105961,0.03711191,-0.003518934,-0.036326714,0.05006759,0.00390287,-0.072561055,0.009953474,0.052238416,0.033324506,-0.032470033,0.019710649,-0.0024075396,-0.028428597,-0.02796672,0.0069801332,0.036326714,0.004852607,- [...]
+{"input":"VPerson166Person","embedding":[0.041378267,-0.011965348,-0.011828861,0.024112679,0.020052195,0.06596865,-0.0073930384,-0.016912997,-0.064057834,0.023452992,-0.0069949515,0.032210898,0.017049484,0.00669923,0.008240394,0.022850176,-0.009832741,0.036441993,-0.012636408,0.002047303,0.043630302,-0.010475366,-0.08771556,-0.010390063,0.049999688,0.029845128,-0.02795706,0.026637686,0.019130908,-0.032688603,-0.017845657,-0.016105449,0.012079087,0.011794739,0.005510657,0.01954037,-0.0038 [...]
+{"input":"VPerson166Person","embedding":[-0.020719398,-0.0035383862,-0.023110934,0.05400523,0.05065708,0.0016387457,-0.00835407,-0.027567888,-0.01563195,-0.01846918,0.005011355,0.008788895,-0.02057808,-0.025959035,-0.03641657,-0.009484614,-0.019240994,-0.0028698433,0.021719495,-0.05574453,-1.1541539E-4,0.05822303,-0.016555952,-0.041743174,-0.014207898,0.06826748,0.022306507,0.031763945,0.003454139,-0.0063756173,-0.010000968,-0.008185576,-0.040177803,-0.02250218,-0.037655823,0.0075550796, [...]
+{"input":"VPerson166Person","embedding":[-0.0067835664,0.042704526,-0.08571223,0.04474014,0.009414703,0.0310539,-0.0031941773,0.0061284895,-0.006805222,0.013826998,0.0015064066,0.008656763,0.04885467,-0.018591195,0.020204525,0.033219445,0.046169396,0.0017689788,0.01220284,-0.00551943,-0.017681668,-0.018883543,-0.03248316,-0.029494708,0.05331569,0.014790665,-0.01666386,-0.03579644,0.015505295,-0.041340236,-0.017400146,0.009847811,-0.01018347,0.043289226,0.0057386914,0.0023509688,0.0432242 [...]
+{"input":"VPerson166Person","embedding":[0.0063260235,0.02363263,-0.06862284,0.021438835,0.013894036,0.03356855,-0.052233223,0.011764082,-0.008368922,-0.042181227,-0.0038101233,-0.005545427,0.022820113,-0.013418134,-0.029691685,0.008873844,0.035193585,0.010272534,0.006331827,0.030898852,-0.0010903685,0.018722707,-0.030945282,-0.029552396,-0.026604122,0.015205671,-0.009906901,0.006581386,-0.018409308,-0.031339932,0.013197594,-2.2416757E-4,-0.05218679,-0.006918,0.014938701,0.009547072,-0.0 [...]
+{"input":"VPerson166Person","embedding":[-0.04383638,-0.014797452,-0.06859859,-0.029060313,-0.029701822,0.01698927,-0.06286779,-0.019170398,0.008238032,-0.0331232,-0.01146161,0.024526991,5.1053346E-4,9.2083134E-4,0.034769736,0.0385974,0.032909364,-0.04216846,0.015834557,-0.02559617,0.023842715,0.01716034,-0.039923184,-0.007981429,-0.014348396,-0.054314345,-0.060430057,-0.01341821,-0.011953433,-0.024334539,-0.01924524,0.044520658,-0.019480461,0.04567537,0.0045653987,-0.0019592724,0.014380 [...]
+{"input":"VPerson166Person","embedding":[0.014313219,-0.02322831,-0.07987361,0.025238002,0.0073377155,0.014792274,-0.009446724,-0.030122023,-0.027551485,5.122818E-4,-0.0070748194,0.06388953,0.011736839,0.058374565,-0.04437682,0.0122100515,-0.032809403,-0.07347063,0.01604249,-0.010223728,0.040380802,0.04753157,-0.0036338049,0.03096329,0.0050359163,-0.026196111,-0.009107881,0.03724942,0.038277637,-0.016930493,-0.032505613,0.019150503,-0.0014780589,0.029350862,-0.011742681,0.019781452,0.010 [...]
+{"input":"VPerson166Person","embedding":[-0.019203452,0.002471081,-0.04027336,0.0015132085,0.05615137,0.024802817,-0.036540452,-0.01338064,0.032097764,-0.01848053,-1.028419E-4,0.009989476,0.020005241,-0.032492086,-0.0032367217,0.039116684,0.029889563,0.004906016,0.006335431,-0.026090935,0.04100943,0.008944524,-0.020609867,-0.029652972,-0.020373274,0.020609867,-0.018191362,0.03406937,0.059936855,-0.01042323,-0.022055712,-0.0098054595,0.003315586,0.008872232,0.009897468,0.009884324,-3.7973 [...]
+{"input":"VPerson166Person","embedding":[-0.021677043,-0.03684295,-0.08088483,0.0064996737,0.02030145,0.014042505,-0.028658174,-0.0309279,-0.056995377,0.030950828,0.018891469,0.009950118,0.02135607,-0.016896859,-0.015257612,0.026663564,0.018891469,-0.03489419,0.040717535,0.01440933,0.0057688905,0.016254917,-0.012162529,0.002966121,0.019395852,-0.031799108,-0.05438175,0.035054676,-0.05346469,0.010385722,0.027053315,0.07281469,-7.067822E-4,0.01164095,-0.0047142697,-0.005192861,0.03299129,- [...]
+{"input":"VPost1030792159194Post","embedding":[-0.0095452685,0.012837528,6.7409885E-4,0.010254019,0.02585796,0.08189497,0.011014211,0.020050779,-0.06826867,0.024874855,-0.00963672,-0.019959327,0.027549816,0.020599488,-0.030521994,0.02608659,-0.028029937,0.03031623,-0.015581079,0.01841608,0.052630436,-0.021594025,-0.059672214,-0.011728677,-0.008413554,0.007830549,-0.025835097,0.05651713,0.007956295,-0.019330597,-0.027092557,0.023914613,0.024646226,0.053773582,-0.00384097,0.033471312,-0.00 [...]
+{"input":"VPost1030792159194Post","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002030149 [...]
+{"input":"VPost1030792159194Post","embedding":[-0.035342038,-0.03088386,-0.048739675,-0.004891292,-0.013744126,0.050864816,0.0015750885,-0.015407281,0.009857657,0.016712395,-0.0026694213,-0.039130338,0.024000248,0.03192333,-0.06574081,0.01322439,-0.0021800033,0.0330552,0.039592322,0.010977977,-0.015130089,-0.02393095,-0.012762403,-0.012785503,-0.003574628,0.016723946,-0.020893382,0.010348518,0.03753648,-0.043496117,0.007946184,0.020419845,0.013709477,0.060150765,0.017001137,0.008552543,- [...]
+{"input":"VPost1030792159194Post","embedding":[0.0035608106,0.013899879,-0.03469247,0.0041744146,0.036116794,0.029885374,-0.06775714,0.038736533,0.032225337,-0.044077747,-0.044586435,-0.07030057,0.044230353,0.0255361,0.01849078,0.0024369298,0.020131297,0.03311554,0.019139357,-0.033497054,-0.025192736,0.022344086,0.0099321185,-0.0028581864,-0.026858686,0.005312602,0.032555982,0.008126278,-0.012806201,-0.012615443,0.022267783,0.05295434,-0.0063109007,0.021809965,0.021860834,0.001177134,-0. [...]
+{"input":"VPost343597397902Post","embedding":[0.003345473,-0.0056615695,0.011004257,-0.0026195948,-0.016335754,0.05370659,-0.007848995,-0.02293719,-0.03535684,0.04139883,-0.02441412,0.020330183,0.019513395,0.043032404,-0.024705032,0.0060196137,-0.010204252,0.028531626,-0.012822448,-0.02819596,0.048380688,-0.029919047,-0.10016279,-0.019345561,0.038892522,0.009644808,0.009555298,0.030836534,-0.0050517763,0.0040279943,-0.014959523,0.016548343,0.030500868,0.015530156,-0.0126658045,0.03204493 [...]
+{"input":"VPost343597397902Post","embedding":[0.017332861,0.038206607,-0.04638125,-0.04360537,-0.003092812,0.053288165,-0.03687331,-0.042250216,0.002486271,-0.01889566,-0.021955686,0.0062457314,0.038709328,0.036764026,0.04769269,0.00731674,0.03761646,-0.015606132,-4.9896183E-4,-0.019616952,0.01825087,-0.0027294338,-0.016469497,-0.013431328,-0.01308161,-0.06666485,-0.0492227,-0.019409306,0.016316496,0.017223574,-0.007311276,0.054249886,-0.032742277,0.08060983,-0.038228467,-0.032042842,0.0 [...]
+{"input":"VPost343597397902Post","embedding":[-6.618811E-4,0.00634447,-0.049306814,0.019582093,-0.031557214,0.030001726,-0.067290805,-0.040016506,-0.03255869,-0.027721765,-0.035584435,-0.0113039175,0.010392998,0.02591058,-0.009577965,-0.044832125,0.0138076125,0.012465206,0.0038913814,-0.050031286,0.0018071885,-0.010606078,-0.03264392,-0.008597796,0.004469362,-0.009151805,0.010131975,-0.009849643,-0.046962928,0.038695406,0.018250339,0.035904054,0.042083386,0.032302994,0.01274221,-0.016886 [...]
+{"input":"VPost343597397902Post","embedding":[-0.004697332,0.013312085,-0.047985423,-0.05567738,-0.007078743,0.010317462,-0.02044441,0.009156523,0.049390454,-0.012174961,-0.0281959,-0.02383792,0.051581353,-0.047009043,-0.0064298087,0.026243145,0.030410612,-0.008084889,0.034697153,-0.05401039,0.002231084,0.043341674,-0.0030288566,0.01048416,0.0042418875,0.040626865,0.030267728,-0.012931059,0.012776268,0.0041049565,-0.039007504,0.013097758,-0.0057868278,0.0052599404,-0.012502406,0.02262340 [...]
+{"input":"EPost1030792151482Post_hasTag_TagTag291","embedding":[0.013118444,0.015023852,-0.008972739,0.016721398,0.0069691734,0.09866548,-0.019746954,-0.010797311,-0.041249193,0.04087966,-0.018222628,-0.0023572205,0.028477186,0.013568813,-0.004841468,0.035775475,-0.008066227,0.037115034,-0.0035250045,-0.036375966,0.050118,0.0038425724,-0.07252098,0.009977408,0.05224282,0.033373505,-0.032426577,0.019735405,-0.0024423865,-0.02845409,-0.027969077,0.0069460776,0.036329776,0.004884773,-0.0120 [...]
+{"input":"EPost1168231107960Post_hasCreator_PersonPerson166","embedding":[0.02395204,0.027625235,-0.008672493,0.02830589,0.041379176,0.10327191,-0.018072583,0.005914664,-0.054921877,0.0025275212,-0.016570447,0.017990435,0.031075455,0.012603867,-0.0061963145,0.03231941,-0.014094268,0.05914664,-0.005436444,0.0073346524,0.031873465,-0.02727317,-0.07125761,-0.028728366,0.029667202,0.012908989,-0.012240068,0.03694318,0.019351747,-0.021288095,-0.02565368,-0.018835388,0.004562154,0.019023154,-0 [...]
+{"input":"VPost755914249344Post","embedding":[0.006937015,0.017325167,0.043197107,-0.012275853,0.0015417198,0.051187992,-0.01668821,-0.015367978,-0.06341752,0.05679319,-0.04449418,-0.02645099,0.06471459,0.01691983,-0.04217798,0.044447854,-5.62402E-4,0.008320943,0.008934736,-0.0145225655,0.05174388,0.02529289,-0.07365512,-0.02191124,0.017545205,-0.015495369,-0.037893012,0.037823524,0.015495369,0.030110583,-0.03671175,-0.016769279,0.0044702636,0.05220712,0.0075392267,0.0405798,-0.022941949 [...]
+{"input":"VPost755914249344Post","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301,-0.0020 [...]
+{"input":"VPost755914249344Post","embedding":[0.03779648,0.013924422,-0.040674265,0.028551295,0.0060671503,0.057057273,0.0014155268,-0.03208622,-0.02535627,0.0112732295,-0.021776028,0.028188739,0.03176898,0.022841036,-0.056694716,-0.014037721,0.024200622,0.0020960276,0.010417824,-0.034986667,0.015827842,0.016518964,-0.00800456,0.013833783,-0.011437513,-0.030386737,0.015612573,0.021266183,-0.037116684,0.03290197,-0.033898998,0.013629844,-1.3286054E-4,0.017232746,0.002291468,0.00840677,0.0 [...]
+{"input":"VPost755914249344Post","embedding":[-0.008104308,0.006851767,-0.025794888,-0.0097412905,0.0034971917,0.104270875,-0.032392427,-0.015824173,0.03695614,-0.021020353,7.591975E-4,-0.0330125,0.04769574,0.025571663,0.0052984934,0.020127453,0.05501256,-0.06706671,0.02643976,-0.035319153,0.03440145,-0.0036026035,-0.0125626065,-0.014956075,-0.034674283,0.092911206,0.006653345,0.026365353,0.06036996,-0.004802438,0.015762165,0.026563775,-0.0030925963,-0.010063726,-0.069001324,0.050944906, [...]
+{"input":"VPost962072691735Post","embedding":[0.016776677,0.021942217,-0.026530031,0.021794954,0.03346273,0.09914212,0.004041242,-0.0014336922,-0.037042357,0.013548214,-1.1504938E-4,0.00620771,0.017977439,0.024332412,-0.011996287,0.023766015,0.006972346,0.017886816,-0.0088188,0.0043301047,0.062394284,-0.021137932,-0.10322017,-0.0013366968,0.032601807,0.025623797,-0.009996906,0.01110138,0.00843365,-0.052335076,-0.01818134,0.013049785,0.03686111,0.019687956,0.0023392192,0.04757734,-0.03652 [...]
+{"input":"VPost962072691735Post","embedding":[-0.043837182,-0.01478703,-0.06868538,-0.02908223,-0.02968098,0.016946813,-0.06282617,-0.019149365,0.008232837,-0.033123802,-0.011440435,0.024548823,4.888247E-4,8.627104E-4,0.03477037,0.03861949,0.032974117,-0.04210508,0.015877614,-0.025575254,0.023800382,0.017149962,-0.039923914,-0.008002959,-0.014337967,-0.05431534,-0.060516696,-0.013450531,-0.011878808,-0.02437775,-0.01922421,0.044521473,-0.019512894,0.045718975,0.004597558,-0.0019927209,0. [...]
+{"input":"VPost962072691735Post","embedding":[-0.026094275,-0.048474062,-0.028740847,8.089167E-4,0.02934445,0.009762137,0.014974028,-0.0031311968,-0.0047562853,-0.0017281073,0.0035200573,0.035357278,0.002106811,0.022878923,-0.050609894,0.026047844,1.1072728E-4,0.02883371,0.013221254,0.01730719,-0.014080229,-0.0076030917,-0.021033285,-0.028508691,0.03967537,-0.021985123,-0.0044138557,0.046895403,-0.014254346,0.025003145,0.0115497345,0.044388127,0.0047940104,0.07034311,-0.022449434,0.00124 [...]
+{"input":"VPost962072691735Post","embedding":[-0.02364936,0.016408568,-0.010359003,0.04047836,0.045803845,-0.0010627613,0.017950155,-0.040011212,0.0035882792,0.024315044,0.040711936,-0.0021182236,0.012250952,0.023310676,0.035409804,-0.0053517623,0.05330157,-0.0021809966,0.023941327,-0.04531334,0.032396704,0.017261112,-0.053815432,-0.015380843,-0.029360242,0.01647864,-0.0056466493,0.01684068,0.033401072,-0.041692946,0.006119637,0.026043491,0.003144489,-0.019024596,-0.017856726,0.034872588 [...]
+{"input":"VPost962072691735Post","embedding":[0.011857171,0.03692761,-0.059343804,0.007388999,-0.00938258,0.04761413,-0.019031744,0.022729142,-0.023401394,0.012077391,-0.064536385,0.042885173,0.025383385,-0.016945438,-0.04330243,0.017733598,0.052574903,0.012726464,0.032105926,-0.038202573,0.027307423,-0.02112964,-0.031595938,-0.022288699,-0.02568474,-0.0075976294,0.039547082,-0.027724683,-0.014801179,0.013317584,-0.012262841,0.05433667,0.0033322938,0.03950072,0.049329538,-0.0079627335,-0 [...]
+{"input":"VPost824633721727Post","embedding":[0.039557453,0.031156495,-0.0034415692,0.01834327,0.026661865,0.11568379,-0.015260565,-0.025273472,-0.015084074,0.010107036,-0.017084302,0.0040887017,0.028403241,0.004556402,-0.021473039,0.028897414,0.010454134,0.047652494,0.0047593666,8.8465976E-4,0.03861617,-0.032803744,-0.05737125,-2.7686983E-4,3.7430742E-4,0.016001826,-0.03266255,0.0119484225,0.028732691,-0.022684941,-0.035415806,-0.0025767647,0.0074126106,0.027697278,0.010259994,0.0106541 [...]
+{"input":"VPost824633721727Post","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.0020301493 [...]
+{"input":"VPost824633721727Post","embedding":[0.0018807128,0.037774317,-0.06322948,-0.018015103,-6.5093633E-4,0.03801717,-0.027000578,-0.07042669,0.008814375,-0.059652954,-0.014593117,0.06261132,-0.03444064,0.015409978,-0.07537201,0.009327673,0.046097472,0.05669459,0.023711056,-0.018975468,-0.01473662,0.020785809,-0.020542959,-0.045302685,0.024262989,-0.0099348,-0.0011721684,-0.005778742,0.017849524,0.024064293,-0.050071392,0.023711056,0.023269508,0.0060160733,-0.021370858,-0.008875088,0 [...]
+{"input":"VPost824633721727Post","embedding":[0.010890618,0.0040010014,-0.018396234,-0.025859986,0.07454183,0.038203884,-0.047031205,-0.00954499,0.004003992,0.0077986633,-0.041265935,0.04688767,0.06372896,0.016793441,0.015370065,0.048586152,0.058035452,-0.018970368,0.009987553,-0.051241525,0.055643227,5.5880955E-4,-0.024496416,-0.0019511611,-0.0180374,0.0042731175,-0.00776278,-0.019006252,0.01908998,-0.0057114447,-0.046409223,0.020920034,0.0046199905,0.023025196,-0.00555894,0.05535616,-0 [...]
+{"input":"EPost549755819919Post_hasTag_TagTag2857","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.040001918,0.01 [...]
+{"input":"EPost549755819919Post_hasTag_TagTag5927","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.040001918,0.01 [...]
+{"input":"VPost1168231107960Post","embedding":[0.02395204,0.027625235,-0.008672493,0.02830589,0.041379176,0.10327191,-0.018072583,0.005914664,-0.054921877,0.0025275212,-0.016570447,0.017990435,0.031075455,0.012603867,-0.0061963145,0.03231941,-0.014094268,0.05914664,-0.005436444,0.0073346524,0.031873465,-0.02727317,-0.07125761,-0.028728366,0.029667202,0.012908989,-0.012240068,0.03694318,0.019351747,-0.021288095,-0.02565368,-0.018835388,0.004562154,0.019023154,-0.011794121,0.031896938,0.01 [...]
+{"input":"VPost1168231107960Post","embedding":[-0.04375179,-0.01479777,-0.068600066,-0.029146476,-0.029616924,0.017075174,-0.06282637,-0.019138735,0.0082595935,-0.033059757,-0.011461857,0.024613054,5.493031E-4,9.034766E-4,0.03481325,0.038576845,0.032952838,-0.0421266,0.015888358,-0.025575338,0.02380046,0.017203478,-0.039902657,-0.008008331,-0.014359397,-0.05427275,-0.060474124,-0.013471958,-0.01190023,-0.024356445,-0.019234963,0.044564385,-0.019512955,0.045676354,0.004576189,-0.002030149 [...]
+{"input":"VPost1168231107960Post","embedding":[0.03742678,-0.014853754,-0.067508556,0.020292332,-0.019918066,-0.018105205,-0.014690012,-0.036023278,-0.043274716,0.014584749,0.0076081627,0.014923929,-0.020514553,0.024046706,-0.041777644,0.013087678,-0.042385828,-0.018526256,0.010836222,0.03108762,-0.0022923904,0.038175315,-0.044210386,-0.0122572705,-0.011421016,-0.024304016,-0.048935518,0.025450211,0.018128596,-0.07064305,-0.0042192847,0.0026988217,0.02273677,0.0053771758,0.02516951,0.029 [...]
+{"input":"VPost1168231107960Post","embedding":[0.01919562,-0.0011280896,-0.06640647,-0.0020782186,0.009748625,0.058588266,-0.0139110945,0.013585336,0.017603023,0.043482725,-0.001859538,-0.010122644,0.06075999,0.02714654,0.0066177235,0.0439412,0.009646071,0.001848981,-0.03250346,-0.056223504,0.036074735,0.0033360082,0.018797472,0.03713647,-0.021632778,0.073114686,0.016686074,0.014007615,0.029197613,-0.026446763,0.009887373,0.008433525,-0.01173937,-0.009983894,-0.013428489,0.053424392,-0.0 [...]
+{"input":"VPost1168231113797Post","embedding":[0.02252719,0.014924556,-0.0010841064,0.021579785,0.029170722,0.096284434,-0.027790552,0.00259513,-0.051463984,0.019556314,-0.012561891,-0.007865802,0.032258563,0.035486758,2.483649E-4,0.019720063,-0.01822293,0.03876174,-0.0040118517,-0.01259698,0.016924633,-0.004579125,-0.07490349,-0.005883269,0.016889544,-0.01147413,-0.043697603,0.026878236,0.013532689,-0.024188073,-0.028001087,-0.022082727,0.024047716,0.018105965,-0.009631952,0.03317088,-0 [...]
+{"input":"VPost1168231113797Post","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062,0.0057 [...]
+{"input":"VPost1168231113797Post","embedding":[-0.035390507,-0.030839639,-0.048650395,-0.004871392,-0.013756557,0.05096048,0.0015896275,-0.015338966,0.009806312,0.01678277,-0.002658042,-0.039040443,0.024047988,0.031879175,-0.065698825,0.01325989,-0.002144048,0.03305732,0.039502457,0.010984455,-0.015119508,-0.023863181,-0.01271702,-0.012797873,-0.0035402058,0.01677122,-0.020917822,0.010360733,0.037469584,-0.043452702,0.007929368,0.020478906,0.013756557,0.06020082,0.017002227,0.008478013,- [...]
+{"input":"VPost1168231113797Post","embedding":[0.025481269,0.01168194,0.0088869855,-0.060061265,0.01990346,0.06141639,-0.015160508,0.0036630838,0.0016061912,0.030006433,-0.016334146,-0.021210192,0.033757236,0.013176212,0.033176467,0.07308018,0.03578993,-0.023146091,-0.01588647,-0.033103872,-0.0010087849,0.012958423,0.0131520135,-0.016975414,-0.0039020462,0.054301966,-0.018657226,-0.010102972,0.024162438,-0.009933582,-0.008469557,0.0249247,-0.007973484,-0.008965632,-0.010453854,0.05565709 [...]
+{"input":"EPost549755819919Post_hasTag_TagTag9307","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.040001918,0.01 [...]
+{"input":"EPost549755819919Post_hasCreator_PersonPerson529","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.04000 [...]
+{"input":"VPost274877921325Post","embedding":[-0.014704743,-0.0010517582,-0.005609377,0.007255854,0.0071139163,0.042853825,-0.025639622,-0.010554486,-0.067812145,0.04723686,-0.017554851,0.0102365455,0.02330049,0.035813715,-0.022619188,0.0014215058,0.0022369379,0.014670678,-0.026434472,-0.03327019,0.047600217,-0.038947698,-0.07244499,-0.026139243,0.01605599,-0.0045107794,-0.01723691,0.02411805,6.255903E-4,-4.9429794E-4,-0.027297454,-0.0114742415,0.04269485,0.02122252,-0.03274786,0.0580922 [...]
+{"input":"VPost274877921325Post","embedding":[0.017323393,0.03825355,-0.046341445,-0.04358719,-0.0031231293,0.053336382,-0.036876425,-0.04223192,0.002487847,-0.018919114,-0.021946609,0.006262653,0.038690735,0.036679693,0.047652997,0.007311893,0.037597775,-0.01557466,-5.3657434E-4,-0.019596748,0.018274268,-0.0027651852,-0.016492745,-0.013399673,-0.013093644,-0.06662676,-0.049226854,-0.019334437,0.01633973,0.017257817,-0.00726271,0.054254465,-0.0327669,0.08061663,-0.038209833,-0.032023687, [...]
+{"input":"VPost274877921325Post","embedding":[-6.5981306E-4,0.00633314,-0.049344163,0.019558696,-0.03153254,0.029998524,-0.06728362,-0.040012237,-0.03253391,-0.027761418,-0.035538025,-0.011174876,0.010391889,0.025886511,-0.009587596,-0.044827342,0.013774181,0.012421264,0.003840365,-0.050025947,0.0018163169,-0.01069017,-0.032619134,-0.008612857,0.0044715484,-0.009140176,0.010173505,-0.009891204,-0.046915308,0.03873389,0.018216433,0.035878915,0.04205759,0.03238477,0.012794115,-0.016916782, [...]
+{"input":"VPost274877921325Post","embedding":[0.016941488,0.0031694751,-0.03292994,-0.046448015,-0.014897474,0.025882479,-0.008194865,-0.030472105,0.033556934,0.006802929,0.013267279,0.013681098,0.034284253,-0.0044077965,-0.028290153,0.06510748,-0.0058906465,-0.0063389502,0.0075992164,-0.05078684,8.0216565E-4,0.027863793,0.015587172,0.036039848,-0.014057296,0.030447025,-0.018283263,0.012270352,-0.014295556,0.014609055,-0.0059752916,0.01919868,-0.010100938,-8.182325E-4,-0.046899453,0.0034 [...]
+{"input":"VPost962072682488Post","embedding":[0.020815419,0.007525754,-0.02232057,0.0075432556,0.020383708,0.089515634,-0.013919728,-0.0015343204,-0.05978599,0.039040577,-0.034700144,-0.018773548,0.0119828675,0.013067976,-0.003975815,0.028096149,-0.023569029,0.02592593,-0.011819517,-0.009270095,0.026882693,-0.013628032,-0.0934827,-0.041467488,0.009684304,-0.0072048884,0.009019237,0.0074849166,0.030593066,-0.0333,-0.020838754,-0.01746675,0.007105712,0.048678212,-0.006545656,0.026626,-0.01 [...]
+{"input":"VPost962072682488Post","embedding":[-0.0044666636,-0.01242137,-0.09674673,-0.046273977,0.014006844,0.032059383,-0.06993581,-0.03934163,-9.116476E-4,0.016095296,-0.011426348,0.030200548,0.028997775,0.047454882,0.01894915,0.03144706,0.037657745,-0.048329625,0.036105074,-0.009600319,0.067399055,0.043846563,-0.03050671,0.006533247,-0.021956084,-0.04640519,-0.061538268,0.037067294,0.024449104,0.03160014,-0.002611932,0.036411233,0.020458084,0.06857996,-5.3168053E-4,0.0025148902,0.005 [...]
+{"input":"VPost962072682488Post","embedding":[-0.035342038,-0.03088386,-0.048739675,-0.004891292,-0.013744126,0.050864816,0.0015750885,-0.015407281,0.009857657,0.016712395,-0.0026694213,-0.039130338,0.024000248,0.03192333,-0.06574081,0.01322439,-0.0021800033,0.0330552,0.039592322,0.010977977,-0.015130089,-0.02393095,-0.012762403,-0.012785503,-0.003574628,0.016723946,-0.020893382,0.010348518,0.03753648,-0.043496117,0.007946184,0.020419845,0.013709477,0.060150765,0.017001137,0.008552543,-0 [...]
+{"input":"VPost962072682488Post","embedding":[0.006062237,0.004119905,-0.021197166,-0.004231168,0.031357054,0.024248948,-0.07115737,0.037587777,0.028457863,-0.0353498,-0.04272494,-0.07619281,0.04997292,0.024859304,0.014305226,0.0112152975,0.017331576,0.030644974,0.0031662234,-0.03341701,-0.020612242,0.029958323,0.019060919,-8.2175573E-4,-0.048065558,0.0061671417,0.049057387,0.0070254556,-0.022036405,-0.0051912074,0.017878354,0.049769472,0.013771164,0.018463278,0.02304095,0.009937364,-0.0 [...]
+{"input":"VPost137438954237Post","embedding":[-0.015710799,-0.0060634217,-0.02172914,-0.0140653355,-0.007596183,0.04981473,0.007720156,-0.023554929,-0.02734175,0.033179767,0.0024090267,-0.019903352,0.036853883,0.011428085,-0.03967146,-0.0029049201,-0.017051965,0.03827394,0.0030767922,-0.018798862,0.057117887,-0.041790277,-0.084662504,-0.0062268414,0.032007653,0.006852343,-0.0269811,0.016330667,-0.008548523,0.028288456,-0.057208046,0.02995646,0.024434013,0.03629037,-0.0069086943,0.0354563 [...]
+{"input":"VPost137438954237Post","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301,-0.0020 [...]
+{"input":"VPost137438954237Post","embedding":[0.0018791809,0.037793335,-0.063180216,-0.018057797,-6.1294134E-4,0.038036168,-0.026976317,-0.07050929,0.008852294,-0.059603974,-0.014636087,0.0625621,-0.034482002,0.015408731,-0.075365916,0.009315881,0.04609374,0.056690004,0.023731213,-0.018962894,-0.014779578,0.020751014,-0.02057441,-0.04534317,0.02423895,-0.009906402,-0.0011513777,-0.00575068,0.017870154,0.024128573,-0.050023187,0.023709137,0.02324555,0.006081813,-0.02141328,-0.008957153,0. [...]
+{"input":"VPost137438954237Post","embedding":[0.005712171,-0.0013664006,-0.009428311,-0.037008766,0.07692938,0.04992426,-0.039944105,-0.0054274434,-6.7604546E-5,0.013150322,-0.011706135,0.050487846,0.06377906,0.026018852,0.033674218,0.06227617,0.08073358,-0.039873656,-0.015580784,-0.04499289,0.07082388,0.03792459,-1.596091E-4,-0.017776418,-0.0200425,-0.005873615,0.009645526,-0.015381181,0.0066045146,0.0025287953,-0.039263107,0.007755168,0.0030116586,0.03022226,-0.026558954,0.044828508,-0 [...]
+{"input":"VPost549755816877Post","embedding":[0.0152295055,0.0094145,-0.036450576,0.012279287,-0.018589793,0.07030404,-0.027292367,-0.024011815,-0.037885815,2.0912805E-4,0.0036735344,0.027953034,0.018897345,0.016209114,-0.01671031,0.004599037,-0.019580793,0.049117148,-0.00392698,0.0062649427,0.057956412,-0.030276759,-0.07235439,-0.013110816,0.0068060057,-0.0026027989,-0.029912252,0.008753833,-0.023556184,7.6176005E-4,-0.044879768,-0.013042471,0.008713965,0.024011815,-0.0027622702,0.00373 [...]
+{"input":"VPost549755816877Post","embedding":[0.017411405,0.038232956,-0.046299256,-0.04361049,-0.0031341624,0.053294424,-0.036921363,-0.042233314,0.0024182508,-0.018876018,-0.021958264,0.006235535,0.038713872,0.036724623,0.04765457,0.007279345,0.03759902,-0.015629824,-5.178063E-4,-0.019586466,0.018253012,-0.0027229232,-0.01651515,-0.013389185,-0.013115937,-0.066628955,-0.049184762,-0.019378796,0.01632934,0.017269317,-0.00728481,0.054212537,-0.03276798,0.08061929,-0.038211096,-0.03200288 [...]
+{"input":"VPost549755816877Post","embedding":[0.03779648,0.013924422,-0.040674265,0.028551295,0.0060671503,0.057057273,0.0014155268,-0.03208622,-0.02535627,0.0112732295,-0.021776028,0.028188739,0.03176898,0.022841036,-0.056694716,-0.014037721,0.024200622,0.0020960276,0.010417824,-0.034986667,0.015827842,0.016518964,-0.00800456,0.013833783,-0.011437513,-0.030386737,0.015612573,0.021266183,-0.037116684,0.03290197,-0.033898998,0.013629844,-1.3286054E-4,0.017232746,0.002291468,0.00840677,0.0 [...]
+{"input":"VPost549755816877Post","embedding":[0.035370745,-0.014938006,-0.015500259,0.010746676,-0.01367294,0.011519772,-0.055100672,0.00938577,0.03749197,-0.01895044,-0.057042994,0.021570021,0.03171611,0.008868244,0.00865101,0.03805422,0.06956588,-0.011794508,-0.015743049,-0.0344507,0.020368848,0.031767223,-0.018579865,0.002186712,-0.008305992,0.034578484,0.012899844,0.023550682,0.014081851,0.024330167,0.0052583315,-0.004232861,0.0040571573,0.038335346,-0.04745916,0.002748964,0.00815904 [...]
+{"input":"EPost755914247530Post_hasCreator_PersonPerson166","embedding":[0.02568533,0.014511423,-0.01618018,0.019100506,-0.0062240134,0.06327747,-0.025347069,0.010807458,-0.05033333,0.051145155,-0.029518964,0.01850291,0.034232076,0.0108751105,-0.005806824,0.025775535,-0.008202844,0.022494396,-0.004101422,-0.018683316,0.04602613,-0.012718637,-0.08334766,-0.023633212,0.015199222,-0.008056264,-0.033893812,0.034863498,-1.9361953E-4,0.011906808,-0.016980732,-0.0073853782,0.009623542,0.0156389 [...]
+{"input":"EPost549755819919Post_hasTag_TagTag2423","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.040001918,0.01 [...]
+{"input":"VPost893353202439Post","embedding":[0.017588725,0.013388082,-0.0011432965,0.016908174,0.026095614,0.06298618,-0.025579333,0.018069806,-0.05439715,0.005602813,-0.025368128,0.008213548,0.036608957,0.013634489,-0.015687875,0.022352584,-0.0061014923,0.01483132,-0.029075958,0.010390137,0.041537084,-0.0032296842,-0.07312404,-0.024100896,-0.0021985907,0.009744788,-0.009398645,0.040246382,0.034778506,-0.021672033,-2.6144015E-4,-0.01163977,0.036421217,0.050407715,-0.0052009355,0.0514402 [...]
+{"input":"VPost893353202439Post","embedding":[-0.0044666636,-0.01242137,-0.09674673,-0.046273977,0.014006844,0.032059383,-0.06993581,-0.03934163,-9.116476E-4,0.016095296,-0.011426348,0.030200548,0.028997775,0.047454882,0.01894915,0.03144706,0.037657745,-0.048329625,0.036105074,-0.009600319,0.067399055,0.043846563,-0.03050671,0.006533247,-0.021956084,-0.04640519,-0.061538268,0.037067294,0.024449104,0.03160014,-0.002611932,0.036411233,0.020458084,0.06857996,-5.3168053E-4,0.0025148902,0.005 [...]
+{"input":"VPost893353202439Post","embedding":[0.0093821,-0.018401325,-0.054923035,0.030856164,0.003994562,0.029170547,-0.026759177,-0.017933097,-0.02325918,0.06892303,0.015100324,0.03666218,0.022076907,0.026431419,-0.05829427,0.0035614523,-0.04686953,0.009393806,0.036240775,-0.014725742,-0.005548491,-0.0062508313,0.01657524,-0.010494139,-0.006373741,-0.06892303,-0.014304337,0.006385447,-0.035702314,0.02266219,-0.022580251,-0.013309355,-0.0044481573,-0.0154631995,-0.015837781,-0.039729066 [...]
+{"input":"VPost893353202439Post","embedding":[0.036022007,-0.015471146,-0.0388305,-0.005076661,0.023493674,0.028231485,-0.035851054,-0.018316275,0.057977114,0.010415855,-0.041736685,-0.01668002,0.020038003,-0.0012897709,0.0014248535,0.020392118,0.033408884,-0.006551121,0.024531597,-0.030722497,0.02085613,0.02759652,-2.260915E-4,-0.019635046,-0.033506572,-0.014775128,-0.049209725,0.008645281,0.051871687,0.0066304915,0.032896027,0.0072654556,-0.032700654,-7.044134E-4,-0.05363005,0.01243675 [...]
+{"input":"VPost893353202439Post","embedding":[0.034135748,0.05236269,-0.009681644,0.002920402,0.03152216,0.020988258,-0.016636064,-0.015454267,0.039431106,0.01890875,-0.0429765,-0.013192944,0.04556736,0.030044913,0.014636099,0.021033712,0.02731769,0.0019616124,-0.01086344,-0.009715734,-0.032658502,0.032113057,-0.083862126,0.03122671,-0.0075112283,0.042340145,-0.021147346,0.008744161,0.03854476,-0.042794682,0.030090366,0.018351942,-0.0152610885,-0.005309563,0.015306542,0.017238326,-0.0034 [...]
+{"input":"EPost893353202439Post_hasTag_TagTag11718","embedding":[0.017588725,0.013388082,-0.0011432965,0.016908174,0.026095614,0.06298618,-0.025579333,0.018069806,-0.05439715,0.005602813,-0.025368128,0.008213548,0.036608957,0.013634489,-0.015687875,0.022352584,-0.0061014923,0.01483132,-0.029075958,0.010390137,0.041537084,-0.0032296842,-0.07312404,-0.024100896,-0.0021985907,0.009744788,-0.009398645,0.040246382,0.034778506,-0.021672033,-2.6144015E-4,-0.01163977,0.036421217,0.050407715,-0.0 [...]
+{"input":"EPost893353202439Post_hasCreator_PersonPerson460","embedding":[0.017565029,0.013352708,-0.0011572151,0.016919687,0.026142208,0.06289149,-0.025555534,0.018057836,-0.054443378,0.0055998066,-0.025391266,0.008219307,0.036561545,0.013587378,-0.015746338,0.022340558,-0.006083813,0.014819394,-0.02907558,0.01039587,0.04156001,-0.0032179088,-0.07312309,-0.024077114,-0.002204429,0.009668393,-0.0094102565,0.04022239,0.034778055,-0.021660017,-2.4383652E-4,-0.0117217535,0.03644421,0.0504070 [...]
+{"input":"VPost1099511636145Post","embedding":[-0.018625982,0.016852079,0.0020273179,0.043564297,0.018625982,0.080263354,-0.03199937,0.011622521,-0.06879058,0.02455819,-0.017024862,-0.023095297,0.013511613,0.025940454,-0.008967426,-0.016782966,0.0022418564,0.04953106,-0.0041179894,-0.01834953,0.035639327,-0.039947376,-0.05685705,-0.049715362,0.016253099,-0.0024938313,-0.02446604,0.008794643,-0.014087555,-0.018994587,-0.016898155,-0.024419965,0.017888777,-0.009756467,-0.013960848,0.028059 [...]
+{"input":"VPost1099511636145Post","embedding":[-0.0044666636,-0.01242137,-0.09674673,-0.046273977,0.014006844,0.032059383,-0.06993581,-0.03934163,-9.116476E-4,0.016095296,-0.011426348,0.030200548,0.028997775,0.047454882,0.01894915,0.03144706,0.037657745,-0.048329625,0.036105074,-0.009600319,0.067399055,0.043846563,-0.03050671,0.006533247,-0.021956084,-0.04640519,-0.061538268,0.037067294,0.024449104,0.03160014,-0.002611932,0.036411233,0.020458084,0.06857996,-5.3168053E-4,0.0025148902,0.00 [...]
+{"input":"VPost1099511636145Post","embedding":[-0.035342038,-0.03088386,-0.048739675,-0.004891292,-0.013744126,0.050864816,0.0015750885,-0.015407281,0.009857657,0.016712395,-0.0026694213,-0.039130338,0.024000248,0.03192333,-0.06574081,0.01322439,-0.0021800033,0.0330552,0.039592322,0.010977977,-0.015130089,-0.02393095,-0.012762403,-0.012785503,-0.003574628,0.016723946,-0.020893382,0.010348518,0.03753648,-0.043496117,0.007946184,0.020419845,0.013709477,0.060150765,0.017001137,0.008552543,- [...]
+{"input":"VPost1099511636145Post","embedding":[0.012564105,0.032161105,-0.018783586,-0.046752486,-0.0050306474,0.036891416,-0.040620603,0.03328737,0.040195126,-0.037191752,-0.034563802,-0.075935245,0.0325115,0.023050878,-0.0061600404,-0.012270025,0.05996732,0.013002097,0.006970325,-0.024627648,-0.035164475,0.010868452,0.008928774,0.034188382,-0.042848103,0.014240988,-0.006857699,-0.019659571,0.0101426365,0.027656047,-0.0070704375,0.016243234,-0.0020538683,0.01242645,0.029908577,-0.021711 [...]
+{"input":"VPost1099511636200Post","embedding":[0.028460981,0.008630953,0.015282907,0.027934775,0.018737575,0.11128152,-0.024754649,0.0071266848,-0.040174827,0.027705988,-0.043309197,0.003340276,0.009242956,0.012423081,-0.035782136,0.006669113,-0.0070237312,0.069733985,-0.006977974,-0.019687038,0.059484366,-0.027591595,-0.0363541,-0.029032947,-0.014516474,0.024663134,-0.023542082,0.014196173,-0.009877837,-0.028049167,-0.03589653,0.0026410487,0.017639402,0.012194295,0.008453644,0.011336348 [...]
+{"input":"VPost1099511636200Post","embedding":[0.007996142,-0.006446205,-0.055907276,-0.027274512,-0.0019771282,0.033189468,-0.034788694,-0.018172055,-0.04696912,-0.02539049,-0.019081205,1.0534301E-4,0.024185592,0.011183646,0.034328643,0.048327368,0.01931123,0.0056575444,0.010816699,-0.026201058,0.031875033,0.029684309,0.004244528,-0.037965246,-0.025850542,-0.022323476,0.0032504867,0.015740352,-0.026551574,0.0048853145,0.023835076,0.028851833,0.025719099,0.019705562,0.024251314,0.0118408 [...]
+{"input":"VPost1099511636200Post","embedding":[-0.035390507,-0.030839639,-0.048650395,-0.004871392,-0.013756557,0.05096048,0.0015896275,-0.015338966,0.009806312,0.01678277,-0.002658042,-0.039040443,0.024047988,0.031879175,-0.065698825,0.01325989,-0.002144048,0.03305732,0.039502457,0.010984455,-0.015119508,-0.023863181,-0.01271702,-0.012797873,-0.0035402058,0.01677122,-0.020917822,0.010360733,0.037469584,-0.043452702,0.007929368,0.020478906,0.013756557,0.06020082,0.017002227,0.008478013,- [...]
+{"input":"VPost1099511636200Post","embedding":[-0.008437156,0.019032653,-0.046060983,-0.01420091,0.03629939,0.041523557,-0.08540167,0.04579119,0.022454116,-0.01854212,-0.035195693,-0.060826004,0.028524453,0.052192636,-1.175553E-4,0.012901,0.021485314,-0.0035992807,0.025237886,-0.02224564,-0.011030845,0.02832824,0.018014798,0.0013006771,-0.02999605,-0.005978362,0.045742135,-0.02387666,-0.041866932,-0.004022365,0.015243291,0.044957284,6.7946385E-4,0.021007046,0.027396228,-0.013317952,-0.03 [...]
+{"input":"VPost412316860930Post","embedding":[0.045191623,0.009344046,0.0022857285,0.042088434,0.0067580556,0.104542986,-0.048869476,-0.023584235,-0.07466042,0.008401596,-0.015492957,0.021055711,0.047352362,0.012481715,0.011642705,0.010832428,0.005709293,0.04553642,-0.022745224,-8.526586E-4,0.06427049,0.015446984,-0.086153716,0.0035887803,0.025147323,0.054524176,-0.026089773,0.009142914,0.012688594,-0.045191623,-0.039077193,-0.013585071,0.0044881306,0.0030169892,-0.015136666,0.0126771005 [...]
+{"input":"VPost412316860930Post","embedding":[-0.004494171,-0.01243278,-0.09666295,-0.046232007,0.014018315,0.031995,-0.069894746,-0.039321262,-9.014312E-4,0.016052173,-0.01141585,0.030179836,0.029020755,0.047500435,0.019026417,0.031426392,0.037637316,-0.048243996,0.036128324,-0.009600687,0.06735789,0.043891978,-0.030486008,0.0065389643,-0.022011597,-0.046406966,-0.06145314,0.037046842,0.02447191,0.03153574,-0.0025778608,0.03639076,0.020480735,0.06858258,-5.1666563E-4,0.002586062,0.00570 [...]
+{"input":"VPost412316860930Post","embedding":[0.037412453,-0.014857354,-0.06752492,0.02030895,-0.019899495,-0.018109594,-0.014681874,-0.03603201,-0.043285206,0.014553187,0.007697747,0.014950943,-0.020507827,0.024075933,-0.041740976,0.013079151,-0.0424195,-0.018519048,0.010868096,0.03104836,-0.0022870966,0.038207967,-0.044244498,-0.012283639,-0.011388688,-0.024216317,-0.04894738,0.02545638,0.018179785,-0.070660174,-0.004223232,0.0026629174,0.02275398,0.0053580063,0.025152214,0.029199965,- [...]
+{"input":"VPost412316860930Post","embedding":[0.076432034,-0.0021559647,-0.026610766,-0.044203438,0.021079175,0.0406307,-0.026783243,-0.018541297,-0.0012065703,0.04102493,0.02749779,0.0058026253,0.034076564,0.014032251,0.007102364,0.026561486,0.03141549,-0.006289257,-0.0019727077,-0.033509854,-0.038265295,-0.002143645,0.028039861,0.0039731353,0.0048848004,0.044203438,0.010176154,-0.004225691,-0.015695423,-0.035899892,-0.02998639,0.039472636,-0.014290967,-0.010089915,-0.021276293,0.010625 [...]
+{"input":"VPost549755819919Post","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.040001918,0.01144373,0.011244857 [...]
+{"input":"VPost549755819919Post","embedding":[-0.043792143,-0.014818338,-0.06859629,-0.029059337,-0.029679442,0.016935242,-0.06282291,-0.019084223,0.00823241,-0.033100702,-0.011493299,0.024547549,5.3022866E-4,8.9407177E-4,0.034683034,0.038531955,0.032951023,-0.042102896,0.015844716,-0.025595311,0.023863297,0.017127689,-0.03990046,-0.008018581,-0.014433445,-0.054355286,-0.060470793,-0.013524673,-0.011888883,-0.024248188,-0.019201828,0.044476397,-0.019522572,0.045588307,0.004589301,-0.0020 [...]
+{"input":"VPost549755819919Post","embedding":[0.04124021,-0.027090475,-0.06506192,0.024493372,2.0447292E-4,0.021213409,-0.012045186,3.659173E-4,-0.05355406,-0.030045798,0.006643883,0.034859397,-0.03611317,-4.1874094E-4,-0.0076961573,-0.0051662205,-0.052210733,0.014205707,-0.0075898105,-0.011765325,-0.025635201,0.019064082,-0.06286781,-0.0016329847,0.023597818,-0.020015607,-0.03116524,0.03286679,-0.03441162,-0.05870349,0.010186914,0.038866993,0.024627704,-0.022142544,-0.0033639204,0.00500 [...]
+{"input":"VPost549755819919Post","embedding":[0.004631271,-0.006812413,-0.032301947,0.014899595,0.021869892,0.047084592,-0.042617053,-0.030337166,-0.0043067313,0.00811642,0.016396571,0.003183999,0.055481695,0.013157021,6.125324E-4,0.062592335,0.04336554,-0.065445945,-0.00857253,-0.012548874,-0.026547944,-0.015414181,-0.02528487,0.010016878,0.007748023,0.026805237,0.015531132,0.027296433,-0.028395774,0.02081733,0.011753606,0.026290651,-0.018139146,0.028395774,-0.062919796,0.030243605,0.00 [...]
+{"input":"EPost549755819919Post_hasTag_TagTag572","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.040001918,0.011 [...]
+{"input":"EPost549755819919Post_isLocatedIn_CountryCountry55","embedding":[0.0054377606,-0.0015540518,-0.04841141,0.020785088,-0.009142484,0.07109431,-0.015205274,-0.0138643,-0.03704723,-0.004466123,-0.0143643245,0.029592328,0.036388107,0.01492117,-0.019114552,0.017080365,-0.009557276,0.048502322,-0.006613953,0.0038070006,0.037660897,-0.032683384,-0.05718456,-0.00627871,0.007971973,-4.7232377E-4,-0.0201146,0.027092207,-0.034478925,0.0071878443,-0.035592616,-0.0032217454,0.016603068,0.040 [...]
+{"input":"EComment824633737550Comment_hasCreator_PersonPerson21990232556059","embedding":[0.020985914,0.005904434,0.008805159,0.029224658,0.013719799,0.10124502,-0.009737738,-0.014886954,-0.054192632,-0.0022842493,-0.04300167,0.010481514,-0.008524813,0.049981717,-0.007111639,0.0073462143,-0.014223278,0.075842224,-7.1481126E-4,0.0034127857,0.017358577,-0.0017292782,-0.06453683,-0.006230551,0.03295498,0.030529127,-0.037554946,-0.011934738,0.0049918783,-0.08604911,-0.046068314,0.020070497,0 [...]
+{"input":"EComment1099511645309Comment_hasCreator_PersonPerson21990232556059","embedding":[-0.0035540494,0.03412354,-0.0064316927,0.021889912,0.008204344,0.078369856,-0.023627577,-0.011009098,-0.030414967,0.045925666,-0.021645008,0.0016385363,0.007580417,0.032864023,-0.014146225,0.017073432,-0.022029858,0.0638621,-0.0042712735,-0.008915737,0.027429448,-0.03043829,-0.07351839,-0.018636165,0.04140074,0.0043878956,-0.033727027,-0.011166538,-0.013703062,-0.05439241,-0.03365705,0.0072830315,0 [...]
+{"input":"EPerson166Person_likes_CommentComment893353218392","embedding":[0.009136238,0.034152407,-0.014894765,0.003987575,0.05357424,0.05446558,-0.03438697,-0.02366743,-0.0793762,0.004137109,-0.018295933,-0.027608093,0.024934072,0.028757453,-0.039336253,0.019621214,-0.045786742,0.05357424,0.012103463,0.0122442,0.026576014,0.015105872,-0.070838094,-0.042502858,0.0069254795,-0.020019973,-0.044871945,0.011675385,0.026740208,-0.054324843,-0.023057565,-0.016677445,0.026622927,0.044379365,0.0 [...]
+{"input":"EComment1099511645512Comment_hasCreator_PersonPerson21990232556059","embedding":[0.009426354,-0.008251641,0.015036324,0.0056128353,0.022290891,0.09044716,-0.047997046,0.010234327,-0.09154738,0.015403064,-0.030026805,-0.012572292,0.028834902,0.05721138,-0.029820515,-0.0047217724,-0.02596975,0.04584245,-0.023677627,0.0034095324,0.052627135,0.0034123973,-0.06798436,-0.011718476,-0.0049137375,0.0031373426,-0.031585447,0.011655443,0.015311379,-0.03853058,-0.034106784,-0.020113375,0. [...]
+{"input":"EComment962072691762Comment_hasCreator_PersonPerson21990232556059","embedding":[-0.0051596835,-0.0020439608,-0.004699939,0.0062782983,-0.039051954,0.06301725,-9.0191973E-4,-5.999377E-4,-0.031040095,0.022302015,-0.025956547,-0.0023807166,0.029821917,0.023215648,-0.038091466,1.8924208E-4,-0.005429088,0.025558297,-0.012158346,-0.022091176,0.06329837,-0.017136475,-0.056457832,0.005847837,0.010377933,-0.0027365065,-0.045095988,0.03413239,0.013353097,0.006998663,-0.03474148,0.0044393 [...]
+{"input":"EComment1168231121319Comment_hasCreator_PersonPerson21990232556059","embedding":[0.0013636098,-6.752874E-4,-0.007148994,0.02187569,0.022709932,0.09246187,-0.013556439,-0.0043044593,-0.054272104,0.01039327,-0.03698475,-0.00793689,0.01833016,0.024030818,-0.02377591,0.009698069,-0.017762411,0.041526735,-0.005813627,-0.0065928325,0.042639058,0.0021826448,-0.06924212,-0.028642323,0.027020186,2.015226E-5,-0.027831255,0.021910451,-0.026927492,-0.031330436,-0.031793907,-7.306863E-4,0.0 [...]
+{"input":"EComment1168231122448Comment_hasCreator_PersonPerson21990232556059","embedding":[0.019166365,0.013705231,0.01895677,4.8032354E-5,0.04585489,0.06907344,-0.017361512,-0.004104583,-0.036516234,0.017338224,-0.032324318,-0.0107767135,0.02806254,0.023544587,-0.0074639367,0.021565072,-0.03670254,0.03127634,-0.011719895,0.0031235586,0.03728475,0.003143936,-0.07424346,-0.029855747,0.0036184373,-2.2633428E-4,-0.032044858,0.007033101,0.03244076,-0.026152888,-0.016313534,-0.013006579,-0.00 [...]
+{"input":"EComment962072691638Comment_hasCreator_PersonPerson21990232556059","embedding":[0.0038727939,0.0308173,0.0031477504,0.02468685,0.00744496,0.08144067,-9.335673E-4,-0.022376142,-0.031618975,0.021232577,0.012425951,-0.0038934252,0.028223649,0.0098912455,-0.015019602,0.013416254,-0.036735542,0.036664806,0.01155354,-0.011700907,0.038268156,-0.008099267,-0.08592062,-0.023555076,0.03312801,6.259396E-4,-0.02959121,0.008853785,0.027021138,-0.024592536,-0.03032215,0.0027262818,0.00996198 [...]
+{"input":"EPost824633737400Post_hasCreator_PersonPerson21990232556059","embedding":[0.032450452,0.021774724,0.020928191,0.031039564,0.018564953,0.097163245,-0.016836612,-0.024290811,-0.041386086,0.05977468,-0.019470273,-0.026947986,0.020340322,0.018882401,0.012521642,0.046606377,-0.01394429,0.023961604,0.015684387,0.010411187,0.03764723,-0.0034096492,-0.07529446,-0.015766688,0.031180654,0.017283395,-0.016813098,0.013297631,0.021598363,-0.037035845,-0.015096515,0.0013205042,-0.005049808,0 [...]
+{"input":"EPerson166Person_likes_CommentComment1030792200386","embedding":[0.03240806,0.032656483,-0.025745776,0.03832507,0.023148615,0.07534027,-0.001566766,-0.006267064,-0.055511508,0.014848989,-8.4634917E-7,-0.004985421,0.016949302,-0.0036755484,-0.0060976837,0.0027256082,-0.01004424,0.06571948,-0.010366063,-0.009745002,0.054246802,-0.03753463,-0.08333501,-0.018293051,0.01846243,0.0059057195,-0.033153333,0.01035477,-5.5754284E-4,-0.022832438,-0.017254187,0.008773889,0.0055302605,-9.56 [...]
+{"input":"EPerson21990232556059Person_likes_CommentComment1168231121995","embedding":[0.035078783,-9.440216E-4,-0.008922622,-0.0015336674,0.03376127,0.076886296,-0.021527221,-0.011922317,-0.060464438,0.0062875957,-0.03693742,0.011292969,0.03202027,-0.011104752,-0.012434029,-0.002085082,-0.028702961,0.039595973,-0.0021777197,-0.02691491,0.05862933,0.016210115,-0.06804014,-0.011540002,0.025268018,0.011998779,-0.021833073,0.028208895,0.001666007,-0.013986812,-0.038960744,-0.01806875,0.01670 [...]
+{"input":"EPost274877910425Post_hasCreator_PersonPerson166","embedding":[-0.0029206797,-0.012141663,0.022098988,0.016219867,-0.01775355,0.028094297,-0.011061112,-0.029349128,-0.064321764,0.0288379,-0.014163337,0.011299298,0.01854363,0.012769079,-0.04364027,-0.0013339852,-0.013024692,0.037691437,-0.004130489,-0.031835556,0.050704513,-0.02570082,-0.058233503,-0.0024646414,0.0067272945,-0.011955761,-0.01501151,0.039085697,-5.4935215E-4,-0.004551671,-0.042199537,-0.0026185906,-0.0022758355,0 [...]
+{"input":"EComment962072691749Comment_hasCreator_PersonPerson21990232556059","embedding":[0.023831965,0.026378894,0.024491439,0.0073622125,0.017873975,0.10578846,-0.01660051,-0.0039028255,-0.055441156,0.0127346385,-0.014178655,-0.024309514,0.041524015,0.022387948,-0.020909822,0.019579506,0.0010595617,0.043434214,-0.0014767064,0.004732851,0.031768374,0.012746008,-0.07422475,0.0056566806,0.012723268,0.027629618,-0.028698416,0.011540766,0.025264613,0.013507812,-0.046322245,-0.0014681787,0.0 [...]
+{"input":"EComment1030792169236Comment_hasCreator_PersonPerson21990232556059","embedding":[0.0193487,0.03878992,-0.0023043805,0.011663577,0.03784157,0.057224967,-0.01252519,0.011808143,-0.08118821,0.008633476,-0.016688688,-0.024055766,0.024032636,0.02143045,-0.024402725,0.013612325,0.008702867,0.021661755,-0.034672685,0.006129594,0.041889414,-0.020794358,-0.086461976,0.004319629,-0.0034493424,0.0041895197,0.00945461,0.021337926,0.021997148,8.384822E-4,-0.019903833,-0.035528515,0.02620690 [...]
+{"input":"EComment1099511646154Comment_hasCreator_PersonPerson21990232556059","embedding":[0.036202025,0.013590518,0.019151887,0.02327273,0.030534388,0.06494166,-0.021784976,-0.010278494,-0.06810609,0.02746442,-0.033769663,-0.010124995,0.026283663,0.013130023,-0.013082793,0.01226807,-0.043262955,0.057006974,-0.016884832,0.013614134,0.06012417,-0.009699923,-0.05681805,-0.00645284,-0.012846641,0.002416125,-0.031715147,0.0067185103,-0.006724414,-0.027181037,-0.051244877,0.0029341823,0.01922 [...]
+{"input":"EPerson166Person_likes_CommentComment1099511648359","embedding":[0.031309817,0.033688355,0.0067582545,0.021566952,0.050132297,0.08091609,-0.015128884,-0.011601099,-0.043774277,0.02909137,-0.017027142,0.00509442,0.013607992,0.05507234,-0.002515763,-0.00201404,-0.014191191,0.034488827,-0.0060835727,-0.030189158,0.0290685,-0.021075234,-0.09143656,-0.028588217,0.016729824,0.02831377,-0.013871003,0.0028202278,0.01494592,-0.040480915,-0.015186061,0.013848132,0.029457299,-0.0030846687 [...]
+{"input":"EPost1099511644342Post_hasCreator_PersonPerson21990232556059","embedding":[0.023217412,0.042020246,0.008356166,0.04005821,0.0108904615,0.10090465,-0.03498962,-0.015427667,-0.054189533,0.024595508,-0.023264127,-0.012846656,0.014703582,0.002610207,-0.0070072673,-0.013745923,-0.005010196,0.059795346,-0.0117371725,-0.019480202,0.05881433,-0.034849476,-0.06287854,-0.018230574,0.021488953,3.8612963E-4,-0.0107269585,-0.0070072673,-0.026954621,-0.0024832003,-0.036858227,-0.01663058,-1. [...]
+{"input":"EComment1030792168186Comment_hasCreator_PersonPerson21990232556059","embedding":[0.019054856,0.02123645,-0.006823161,0.007948046,0.013419073,0.098808005,-0.025588274,-0.007823058,-0.048813157,0.006510693,-0.019782053,-0.005740886,0.039359584,-0.0010446367,-0.013191824,-3.9058478E-4,-0.0070844977,0.053403594,0.0028590807,0.0014913237,0.03983681,-0.001589325,-0.10817068,-0.0026787014,0.008999074,0.021406887,-0.031724006,0.020259278,0.006209588,-0.0025366705,-0.03422375,0.01438488 [...]
+{"input":"EPost274877910399Post_hasCreator_PersonPerson166","embedding":[0.023346703,0.001385287,0.024756145,0.039691668,-0.0019550307,0.020016331,-0.015196954,-0.0075416444,-0.05992396,0.030439373,0.004847794,0.008990868,-0.0047881203,0.020129995,-0.04892123,-0.0018754655,-0.021664469,0.06437962,-0.0118779475,-0.013310121,0.057832535,-0.03875962,-0.06697117,-0.027893286,0.0028430352,-0.0180613,-0.0398508,0.009326179,0.0073597813,-0.02152807,-0.039441608,-0.009957016,-0.01684509,0.027484 [...]
+{"input":"EPerson166Person_likes_CommentComment893353218272","embedding":[0.003384773,0.010351347,-0.002414334,0.026560616,0.033053733,0.11574688,-0.025337275,-0.013468514,-0.04446374,0.02324348,-0.025384326,-0.0039846804,0.03670023,0.035947405,-0.0053138873,-0.002418745,-0.01735027,0.034888744,0.0013387644,-0.019679323,0.049733516,-0.0021952502,-0.045240093,-0.0105277905,0.011021832,0.006957752,-0.031383403,-0.009475011,-0.013962556,-0.0124451425,-0.049404155,-0.01792665,0.029242555,0.0 [...]
+{"input":"EComment687194785747Comment_hasCreator_PersonPerson21990232556059","embedding":[0.028048728,-0.029561158,-0.0034602596,0.058389015,0.013646255,0.08368787,-0.03939196,-0.0012367277,-0.05811403,0.038658664,-0.027498752,0.0037237892,0.031508986,0.054172542,0.00833556,0.007006453,-0.018733526,0.016579457,-0.016063854,-0.005098727,0.079058915,-0.0138295805,-0.06618033,0.01918038,-0.001642764,0.042829305,-0.008192336,0.02284688,-0.0028959622,-0.0334339,-0.03824618,0.0049125375,0.0492 [...]
+{"input":"EPerson21990232556059Person_likes_CommentComment893353214787","embedding":[0.031397194,0.018774288,0.019757593,0.032243297,0.01941458,0.0223988,-0.023267768,-0.024971403,-0.0664532,0.021895712,-0.020157777,-0.0035359005,-3.6212965E-4,-0.0026426353,0.0048565036,-0.009735875,-0.0015635712,0.044683263,-0.019517483,0.008323801,0.07761259,0.014418012,-0.10153208,-0.02812713,0.0041676173,0.017139256,-0.024651257,-0.005465353,0.009855929,-0.0049079554,-0.055568233,-0.01899153,-0.01614 [...]
+{"input":"EPost137438956940Post_hasCreator_PersonPerson166","embedding":[0.015871482,0.003923685,-0.039048325,0.011441136,0.025097445,0.055049416,-0.02740688,-0.04413851,-0.038883366,0.013750572,-0.0092023965,-0.0022681963,0.01482281,0.040957145,0.010545639,0.026417121,-0.030399721,0.048309635,-0.001550916,-0.022858705,0.062449038,0.026299294,-0.08309257,-0.032379236,0.04390285,0.03530138,-0.0072700107,0.006498235,0.017980611,-0.04230039,-0.025356667,0.007028463,0.033651784,0.019712687,- [...]
+{"input":"EComment687194784946Comment_hasCreator_PersonPerson21990232556059","embedding":[0.042751368,0.008015881,0.018472116,0.03249285,0.014845481,0.099150635,-0.04379078,-0.008744598,-0.045779213,0.034142345,-0.027182821,-0.02795108,0.06146074,0.009614539,-0.0068013542,4.881059E-5,0.019014416,0.04731573,-0.010066456,-0.014280585,0.06512127,-0.015274802,-0.042231664,-0.0022313413,-0.022426393,0.025013618,0.0045502414,0.010879907,-0.01713896,0.0024431774,-0.024561701,-0.012597193,0.0128 [...]
+{"input":"EComment1099511645416Comment_hasCreator_PersonPerson21990232556059","embedding":[0.042848755,0.009585195,0.007911954,0.031647816,0.021815374,0.075439565,-0.025184855,-0.015938908,-0.06449163,0.0025012356,-0.023988862,-0.0085847005,0.008118954,0.028634835,-0.013523922,-4.2406007E-4,-0.016145907,0.04358475,0.0017537399,0.005724092,0.030888822,-0.014961414,-0.06596362,-0.017560398,-0.0086882,0.032682814,-0.026679847,0.0019190515,-0.007486457,-0.023160867,-0.030244825,0.016053908,- [...]
+{"input":"EPost1168231121079Post_hasCreator_PersonPerson21990232556059","embedding":[0.031155264,0.044624645,-0.029913738,0.034059968,0.04122802,0.07772419,0.002503548,0.019056246,-0.046498645,0.018458908,-0.001412089,0.019934684,0.02122306,0.015460507,-0.020485172,0.03658987,0.011542674,0.04136857,-0.02383495,-0.007419872,0.030265113,-0.025088187,-0.07533483,-0.030827314,-0.014781182,0.010945336,-0.0064770156,0.033216666,0.03239679,-0.028601939,-0.0048343367,-0.014160419,0.037128642,0.0 [...]
+{"input":"EPerson21990232556059Person_likes_PostPost1099511644452","embedding":[0.01796766,0.029409979,0.01830082,0.032695625,-0.004911237,0.0697568,-0.040094074,-0.0077545843,-0.044344734,0.035429835,-0.0505484,-0.021529024,0.020345733,0.037290934,-0.0057958337,-0.0044201133,0.008087744,0.07678762,-0.027227208,-0.021149911,0.055189665,-0.0035096675,-0.05780899,-0.028307104,-0.006255365,0.012097152,-0.017083062,0.005129514,-0.022505527,-0.029616768,-0.036946286,8.250016E-4,0.017714918,0. [...]
+{"input":"EPost206158433649Post_hasCreator_PersonPerson166","embedding":[-0.014798291,-0.0046917307,-0.0095404135,-0.023385784,-0.025157094,0.045134787,-0.019204145,-0.018340912,-0.036076438,0.01774674,-0.026143648,0.024731083,0.026749032,0.03513473,-0.05681647,-0.036278233,0.004758996,0.05982097,-0.026233334,-0.014529231,0.047264844,-0.027018093,-0.040381398,-0.016311752,0.027892536,0.004077938,-0.026771454,0.013901425,-0.02457413,0.01478708,-0.046188604,-0.0026275374,0.011569573,0.0272 [...]
+{"input":"EPerson21990232556059Person_likes_CommentComment1099511645075","embedding":[0.024002045,0.03126851,0.028407339,0.020221211,0.020925151,0.044007532,-0.03047374,0.006693096,-0.06698773,0.044552516,-0.016894532,-0.046959534,0.013590561,0.01479407,-0.0053107645,8.934063E-4,-0.0044932873,0.052999783,-0.024819521,0.009656452,0.07611623,-0.013635977,-0.076570384,-0.012784438,0.0027859516,-5.4427533E-4,-0.024774106,-0.0244562,-0.0027973054,-0.005299411,-0.045574363,-0.0067555425,-0.010 [...]
+{"input":"VPerson21990232556059Person","embedding":[0.035557892,0.011073254,0.0026868505,0.02288968,0.026502635,0.07482021,-0.029383853,-0.006922927,-0.045001887,0.034688953,-0.012233744,-0.013765821,0.019516824,0.016532706,0.020305729,0.030961664,0.0035643643,0.052547935,0.0041846265,0.004130318,0.028423447,-0.010621634,-0.097961426,-0.023015447,0.013422819,0.03548929,0.0024381739,-0.0042818105,0.00367584,-0.046785496,-0.0054594516,0.015869567,-0.01775608,0.006991528,-0.008832307,0.0232 [...]
+{"input":"VPerson21990232556059Person","embedding":[-0.020751206,-0.00358173,-0.023131778,0.0540901,0.05065512,0.0015992777,-0.008332006,-0.0276103,-0.015663953,-0.018435854,0.005065512,0.008799424,-0.020599023,-0.02593629,-0.036480382,-0.009516858,-0.019218508,-0.002809946,0.021653432,-0.05574237,-1.6509111E-4,0.058264256,-0.01655531,-0.0417633,-0.014207347,0.068264835,0.022262163,0.031806197,0.0034811806,-0.00635363,-0.010022322,-0.008201564,-0.040197987,-0.022457827,-0.037697844,0.007 [...]
+{"input":"VPerson21990232556059Person","embedding":[0.008524642,-0.005150951,-0.07596748,-0.037219107,-0.033747252,0.022794379,-0.023930997,-0.03227998,-0.012988456,-0.039141025,0.038603716,0.0021918665,-0.0077238427,0.015210029,-0.003593266,-0.02322836,0.0058587543,-0.024530305,0.030936703,-0.05373108,-0.0095114345,0.013639429,-0.021130782,-0.054805703,-0.019208862,0.025418935,-0.024736963,0.024054991,-0.04385283,-0.019591179,-0.03907903,0.04310886,0.031184694,-0.017576264,0.010544725,0 [...]
+{"input":"VPerson21990232556059Person","embedding":[0.006348605,0.02360706,-0.068616,0.021448303,0.013915864,0.033588413,-0.052274436,0.011780318,-0.008385497,-0.04217702,-0.0038213495,-0.0055332677,0.022771413,-0.013393584,-0.029688723,0.008849747,0.035282925,0.010335343,0.006366014,0.030826133,-0.0010692234,0.018778872,-0.03098862,-0.029526236,-0.02662468,0.015215761,-0.009934928,0.0065923356,-0.018453898,-0.03136002,0.013173065,-1.8225399E-4,-0.05222801,-0.006957932,0.014855968,0.0094 [...]
+{"input":"VPerson21990232556059Person","embedding":[-0.043795317,-0.014798027,-0.068644024,-0.029082827,-0.029596055,0.017011316,-0.062784694,-0.01910699,0.008270429,-0.0331031,-0.011472748,0.024549328,5.2993296E-4,8.7676174E-4,0.03479247,0.038577516,0.032974795,-0.042105947,0.015845865,-0.02561855,0.023865027,0.017107546,-0.039924733,-0.007997777,-0.014391723,-0.054316457,-0.060475174,-0.013429424,-0.011900436,-0.024356868,-0.019235296,0.04447962,-0.019470526,0.045677148,0.004562903,-0. [...]
+{"input":"VPerson21990232556059Person","embedding":[0.014243904,-0.023276338,-0.07987804,0.025216034,0.00740239,0.014816464,-0.009388824,-0.030100325,-0.027553014,4.6666604E-4,-0.007121952,0.06389308,0.011702436,0.058424544,-0.044332545,0.01216399,-0.032811224,-0.073474705,0.016055064,-0.01025935,0.040406413,0.04753421,-0.0036194006,0.030965008,0.005024511,-0.026174195,-0.009102544,0.037321597,0.03827976,-0.016954802,-0.032460675,0.019174935,-0.0015263412,0.029399231,-0.011749175,0.01977 [...]
+{"input":"VPerson21990232556059Person","embedding":[0.0015063874,0.009688923,-0.03712753,0.021513145,0.056158386,0.028826548,-0.028399488,-0.0018783966,0.02491628,-0.01964476,-0.0067428765,0.014159707,0.030614862,-0.020018436,-0.008801439,0.035953112,0.03611326,0.015721146,0.009862416,-0.028693091,0.020031782,0.005188111,-0.018123358,-0.03376443,-0.016508536,0.036300097,-0.016201587,0.033310678,0.06224399,0.009935818,-0.011563984,-0.0038168486,0.003022784,0.0051080375,-0.0017916501,0.012 [...]
+{"input":"VPerson21990232556059Person","embedding":[-0.015932756,-6.083622E-4,-0.04018277,0.004018927,0.047304425,0.015360943,-0.03495849,-0.0052502714,0.018297976,-0.020663198,-0.01157269,-0.005744109,0.04002682,-0.019649532,0.017726164,0.024289005,0.04462731,0.018479915,0.001641522,-0.027654896,0.028954467,0.0072711064,-0.02089712,-0.031007791,-0.020052398,0.014932084,-0.023093397,0.045978863,0.049409732,-0.017427262,-0.045121145,-0.010617505,-0.010045692,0.0027323505,-0.014815123,-0.0 [...]
+{"input":"EComment1099511645979Comment_hasCreator_PersonPerson21990232556059","embedding":[0.041343454,0.00522669,0.0116061615,0.04351471,0.023391396,0.034650605,-0.007672154,2.9798847E-4,-0.042776037,0.018746693,-0.020671727,-0.0011842593,7.736508E-4,0.002214628,0.0017263745,0.014057222,0.032859873,0.03735908,-0.011136095,-0.004432054,0.04637988,-0.05484107,-0.06379472,-0.009317386,-0.004890928,0.022675104,0.018903382,0.023055634,-0.030039476,-9.450292E-4,-0.020000203,0.011432685,-0.005 [...]
+{"input":"EComment893353214312Comment_hasCreator_PersonPerson21990232556059","embedding":[0.037133668,0.04316471,-0.02516401,-0.0035296625,0.026088307,0.10869743,-0.011611491,-0.0072730687,-0.039467517,0.034984674,-0.05139096,8.723061E-4,0.04508263,0.030085895,-0.017503891,0.02541819,-0.01827799,0.04487466,0.0034314557,-0.035053995,0.05753754,-0.007007333,-0.078935035,-0.029623747,0.017168833,-5.524124E-4,-0.017515445,0.012454914,-0.017238155,0.016868437,-0.027451646,0.0014499923,0.04452 [...]
+{"input":"EPerson21990232556059Person_likes_CommentComment1099511646152","embedding":[-0.018213075,0.014946105,-0.013045115,0.006329044,-0.015321749,0.07986434,-0.016050272,-0.0048549226,-0.04184454,0.004169087,-0.030529667,0.022379316,0.002749036,0.0235404,-0.03337546,-0.003958498,0.0037962878,0.064428754,-0.0094423415,0.0038105168,0.07503787,-0.028640062,-0.056551598,-0.032419275,0.017826047,0.0061526047,-0.08018307,0.017564235,-0.002720578,-0.029778378,-0.047445063,0.006175371,0.01841 [...]
+{"input":"EPerson21990232556059Person_likes_CommentComment1168231122116","embedding":[0.02371747,0.008766662,0.015923595,0.033074755,0.03217145,0.056699578,-0.02224671,-0.0029009895,-0.05192829,0.020405363,-0.04553569,0.026543185,0.020173747,0.025269298,-0.012171417,0.012403033,-0.010515363,0.051881965,-0.051094472,-0.0014258855,0.06244365,-0.016201533,-0.07305166,-0.049380515,-0.013121042,0.022339355,-0.011754508,-0.0011443275,-5.515354E-4,-0.029716322,-0.029183606,-0.016259437,0.033422 [...]
+{"input":"EPerson21990232556059Person_likes_CommentComment1099511645855","embedding":[0.04268001,0.010223,0.014675608,0.030349715,0.019505555,0.06994135,-0.037153438,-0.0073319986,-0.059027523,0.058795314,-0.0145014515,-0.0072449204,0.01498909,0.0036776098,-0.011523371,0.02554299,0.001924432,0.048160143,-0.006339305,0.0013787409,0.070127115,-0.03023361,-0.08387388,-0.032695025,0.013793213,-0.015198078,-0.029119007,-0.004687719,-0.008318887,-0.015000701,-0.0051027923,-0.0040694624,-0.0032 [...]
diff --git a/pom.xml b/pom.xml
index f364d084d..66d19baee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,7 @@
         <module>geaflow</module>
         <module>geaflow-console</module>
         <module>geaflow-mcp</module>
+        <module>geaflow-ai</module>
     </modules>
 
     <licenses>
@@ -180,18 +181,18 @@
                         <goals>
                             <goal>prepare-agent</goal>
                         </goals>
-                        <configuration>  
+                        <configuration>
                             <propertyName>coverageAgent</propertyName>
                             <destFile>${jacoco.path}</destFile>
-                            <!-- Allocate 400MB for each test process, reserve system overhead -->  
-                            <argLine>${coverageAgent} -Xmx400m -XX:MaxMetaspaceSize=128m -XX:+UseG1GC</argLine>  
-      
-                            <!-- Maximum 2 parallel processes -->  
-                            <forkCount>2</forkCount>  
-                            <reuseForks>false</reuseForks>  
-                            <parallel>classes</parallel>  
-                            <threadCount>2</threadCount>  
-                            <perCoreThreadCount>false</perCoreThreadCount>  
+                            <!-- Allocate 400MB for each test process, reserve system overhead -->
+                            <argLine>${coverageAgent} -Xmx400m -XX:MaxMetaspaceSize=128m -XX:+UseG1GC</argLine>
+
+                            <!-- Maximum 2 parallel processes -->
+                            <forkCount>2</forkCount>
+                            <reuseForks>false</reuseForks>
+                            <parallel>classes</parallel>
+                            <threadCount>2</threadCount>
+                            <perCoreThreadCount>false</perCoreThreadCount>
                         </configuration>
                     </execution>
                     <execution>
@@ -333,6 +334,8 @@
                         <exclude>**/web-dashboard/**</exclude>
                         <exclude>**/codegen/**</exclude>
                         <exclude>**/template/*.vm</exclude>
+                        <exclude>**/resources/graph_ldbc_sf/**/**</exclude>
+                        <exclude>**/resources/index/**</exclude>
                         <exclude>**/resources/data/**</exclude>
                         <exclude>**/resources/expect/**</exclude>
                         <exclude>**/resources/zip_test2.txt</exclude>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@geaflow.apache.org
For additional commands, e-mail: commits-help@geaflow.apache.org