diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..077879a --- /dev/null +++ b/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + + de.shahondin1624 + rag + 1.0-SNAPSHOT + + + 21 + 21 + UTF-8 + + 0.35.0 + 2.0.9 + + + + + + dev.langchain4j + langchain4j-bom + ${langchain4j.version} + pom + import + + + + + + + dev.langchain4j + langchain4j + + + + dev.langchain4j + langchain4j-embeddings-all-minilm-l6-v2 + + + + io.github.mcp-java + mcp-server-lib + 1.0.0 + + + + org.slf4j + slf4j-simple + ${slf4j.version} + + + + org.junit.jupiter + junit-jupiter + 5.10.0 + test + + + io.github.mcp-java + mcp-server-lib + 1.0.0 + compile + + + + \ No newline at end of file diff --git a/src/main/java/de/shahondin1624/rag/LocalRagService.java b/src/main/java/de/shahondin1624/rag/LocalRagService.java new file mode 100644 index 0000000..5076909 --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/LocalRagService.java @@ -0,0 +1,105 @@ +package de.shahondin1624.rag; + +import dev.langchain4j.data.segment.TextSegment; +import dev.langchain4j.store.embedding.EmbeddingMatch; +import dev.langchain4j.store.embedding.EmbeddingStore; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Facade for the RAG service, coordinating embedding, indexing, and searching. + */ +public class LocalRagService { + private static final Logger log = LoggerFactory.getLogger(LocalRagService.class); + + private static LocalRagService instance; + + private final RagStoreManager storeManager; + private final RagIndexer indexer; + private final RagDocumentSplitter splitter; + + public static synchronized LocalRagService getInstance() { + if (instance == null) { + instance = new LocalRagService(); + } + return instance; + } + + private LocalRagService() { + this.storeManager = new RagStoreManager(); + this.splitter = new RagDocumentSplitter(); + this.indexer = new RagIndexer(storeManager, splitter); + initialize(); + } + + public void initialize() { + log.info("Initializing LocalRagService..."); + storeManager.loadBundledStore("rag-index.json"); + storeManager.ensureStore(); + log.info("LocalRagService initialized successfully."); + } + + public void indexDirectory(Path path) { + indexDirectory(path, null); + } + + public void indexDirectory(Path path, Map metadata) { + indexer.indexDirectory(path, metadata); + new RagFileWatcher(path, p -> indexer.indexFile(p, metadata), indexer::removeFile, indexer::isSupportedFile).start(); + } + + public void indexFile(Path path) { + indexFile(path, null); + } + + public void indexFile(Path path, Map metadata) { + indexer.indexFile(path, metadata); + } + + public void removeFile(Path path) { + indexer.removeFile(path); + } + + public void indexDocuments(List docs) { + indexDocuments(docs, null); + } + + public void indexDocuments(List docs, Map metadata) { + log.info("Indexing {} documents...", docs.size()); + for (String docText : docs) { + List segments = splitter.split(docText, metadata); + if (!segments.isEmpty()) { + var embeddings = storeManager.getEmbeddingModel().embedAll(segments).content(); + storeManager.getEmbeddingStore().addAll(embeddings, segments); + } + } + log.info("Indexing completed."); + } + + public String search(String query) { + log.info("Searching for: {}", query); + var queryEmbedding = storeManager.getEmbeddingModel().embed(query).content(); + List> matches = storeManager.getEmbeddingStore().findRelevant(queryEmbedding, 5); + + String result = matches.stream() + .map(m -> m.embedded().text()) + .collect(Collectors.joining("\n\n---\n\n")); + + log.info("Search completed with {} matches.", matches.size()); + return result; + } + + public EmbeddingStore getEmbeddingStore() { + return storeManager.getEmbeddingStore(); + } + + public void saveStore(Path path) { + storeManager.saveStore(path); + } +} diff --git a/src/main/java/de/shahondin1624/rag/RagDocumentSplitter.java b/src/main/java/de/shahondin1624/rag/RagDocumentSplitter.java new file mode 100644 index 0000000..0033d65 --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/RagDocumentSplitter.java @@ -0,0 +1,48 @@ +package de.shahondin1624.rag; + +import dev.langchain4j.data.document.Document; +import dev.langchain4j.data.document.DocumentSplitter; +import dev.langchain4j.data.document.Metadata; +import dev.langchain4j.data.document.splitter.DocumentSplitters; +import dev.langchain4j.data.segment.TextSegment; + +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Handles splitting of documents into segments for embedding. + */ +public class RagDocumentSplitter { + + /** + * Splits the given document text into segments. + * + * @param docText The text to split. + * @param metadata The metadata to associate with each segment. + * @return A list of text segments. + */ + public List split(String docText, Map metadata) { + List segments = new ArrayList<>(); + Metadata lcMetadata = metadata != null ? Metadata.from(metadata) : new Metadata(); + + // Try to split by DSL-like blocks or Markdown headers + String[] blocks = docText.split("\n(?=## )|\n(?=\\w+\\s*\\{)"); + for (String block : blocks) { + if (!block.isBlank()) { + segments.add(TextSegment.from(block.trim(), lcMetadata)); + } + } + + if (segments.isEmpty()) { + // Fallback to recursive splitter if no blocks found + DocumentSplitter splitter = DocumentSplitters.recursive(500, 50); + List splitSegments = splitter.split(Document.from(docText)); + for (TextSegment segment : splitSegments) { + segments.add(TextSegment.from(segment.text(), lcMetadata)); + } + } + return segments; + } +} diff --git a/src/main/java/de/shahondin1624/rag/RagFileWatcher.java b/src/main/java/de/shahondin1624/rag/RagFileWatcher.java new file mode 100644 index 0000000..0613218 --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/RagFileWatcher.java @@ -0,0 +1,60 @@ +package de.shahondin1624.rag; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.file.*; +import java.util.concurrent.CompletableFuture; +import java.util.function.Consumer; +import java.util.function.Predicate; + +/** + * Monitors a directory for changes and triggers callbacks. + */ +public class RagFileWatcher { + private static final Logger log = LoggerFactory.getLogger(RagFileWatcher.class); + + private final Path dir; + private final Consumer onFileChanged; + private final Consumer onFileDeleted; + private final Predicate fileFilter; + + public RagFileWatcher(Path dir, Consumer onFileChanged, Consumer onFileDeleted, Predicate fileFilter) { + this.dir = dir; + this.onFileChanged = onFileChanged; + this.onFileDeleted = onFileDeleted; + this.fileFilter = fileFilter; + } + + public void start() { + CompletableFuture.runAsync(() -> { + try (WatchService watcher = FileSystems.getDefault().newWatchService()) { + dir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, + StandardWatchEventKinds.ENTRY_DELETE, + StandardWatchEventKinds.ENTRY_MODIFY); + log.info("Started watching directory for changes: {}", dir); + while (!Thread.currentThread().isInterrupted()) { + WatchKey key = watcher.take(); + for (WatchEvent event : key.pollEvents()) { + WatchEvent.Kind kind = event.kind(); + Path fileName = (Path) event.context(); + Path filePath = dir.resolve(fileName); + + if (kind == StandardWatchEventKinds.ENTRY_CREATE || kind == StandardWatchEventKinds.ENTRY_MODIFY) { + if (Files.isRegularFile(filePath) && fileFilter.test(filePath)) { + onFileChanged.accept(filePath); + } + } else if (kind == StandardWatchEventKinds.ENTRY_DELETE) { + onFileDeleted.accept(filePath); + } + } + if (!key.reset()) { + break; + } + } + } catch (Exception e) { + log.error("Error in file watcher", e); + } + }); + } +} diff --git a/src/main/java/de/shahondin1624/rag/RagIndexer.java b/src/main/java/de/shahondin1624/rag/RagIndexer.java new file mode 100644 index 0000000..2c8ecd5 --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/RagIndexer.java @@ -0,0 +1,95 @@ +package de.shahondin1624.rag; + +import dev.langchain4j.data.embedding.Embedding; +import dev.langchain4j.data.segment.TextSegment; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Stream; + +/** + * Handles indexing of files and directories into the vector store. + */ +public class RagIndexer { + private static final Logger log = LoggerFactory.getLogger(RagIndexer.class); + + private final RagStoreManager storeManager; + private final RagDocumentSplitter splitter; + private final Map> fileToIds = new ConcurrentHashMap<>(); + + public RagIndexer(RagStoreManager storeManager, RagDocumentSplitter splitter) { + this.storeManager = storeManager; + this.splitter = splitter; + } + + public void indexDirectory(Path path) { + indexDirectory(path, null); + } + + public void indexDirectory(Path path, Map metadata) { + log.info("Indexing directory: {}", path); + try (Stream paths = Files.walk(path)) { + paths.filter(Files::isRegularFile) + .filter(this::isSupportedFile) + .forEach(p -> indexFile(p, metadata)); + } catch (IOException e) { + log.error("Failed to index directory: {}", path, e); + } + } + + public void indexFile(Path path) { + indexFile(path, null); + } + + public void indexFile(Path path, Map extraMetadata) { + removeFile(path); + try { + String content = Files.readString(path); + if (content.isBlank()) { + return; + } + + Map metadata = new HashMap<>(); + metadata.put("file_path", path.toString()); + if (extraMetadata != null) { + metadata.putAll(extraMetadata); + } + + List segments = splitter.split(content, metadata); + if (!segments.isEmpty()) { + List embeddings = storeManager.getEmbeddingModel().embedAll(segments).content(); + List ids = storeManager.getEmbeddingStore().addAll(embeddings, segments); + fileToIds.put(path, ids); + log.info("Indexed file: {} ({} segments)", path, segments.size()); + } + } catch (IOException e) { + log.error("Failed to read file: {}", path, e); + } + } + + public void removeFile(Path path) { + List ids = fileToIds.remove(path); + if (ids != null) { + for (String id : ids) { + storeManager.getEmbeddingStore().remove(id); + } + log.info("Removed file from index: {}", path); + } + } + + public boolean isSupportedFile(Path path) { + String s = path.toString(); + return s.endsWith(".md") || s.endsWith(".dsl") || s.endsWith(".txt"); + } + + public Map> getFileToIds() { + return fileToIds; + } +} diff --git a/src/main/java/de/shahondin1624/rag/RagStoreManager.java b/src/main/java/de/shahondin1624/rag/RagStoreManager.java new file mode 100644 index 0000000..760cf2a --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/RagStoreManager.java @@ -0,0 +1,65 @@ +package de.shahondin1624.rag; + +import dev.langchain4j.data.segment.TextSegment; +import dev.langchain4j.model.embedding.EmbeddingModel; +import dev.langchain4j.model.embedding.onnx.allminilml6v2.AllMiniLmL6V2EmbeddingModel; +import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; + +/** + * Manages the embedding model and the vector store. + */ +public class RagStoreManager { + private static final Logger log = LoggerFactory.getLogger(RagStoreManager.class); + + private final EmbeddingModel embeddingModel; + private InMemoryEmbeddingStore embeddingStore; + + public RagStoreManager() { + this.embeddingModel = new AllMiniLmL6V2EmbeddingModel(); + } + + public void loadBundledStore(String resourcePath) { + try (InputStream is = getClass().getClassLoader().getResourceAsStream(resourcePath)) { + if (is != null) { + String json = new String(is.readAllBytes(), StandardCharsets.UTF_8); + this.embeddingStore = InMemoryEmbeddingStore.fromJson(json); + log.info("Loaded bundled embedding store from {}", resourcePath); + } + } catch (IOException e) { + log.error("Failed to load bundled embedding store", e); + } + } + + public void ensureStore() { + if (this.embeddingStore == null) { + this.embeddingStore = new InMemoryEmbeddingStore<>(); + } + } + + public void saveStore(Path path) { + if (embeddingStore == null) return; + try { + String json = embeddingStore.serializeToJson(); + Files.writeString(path, json); + log.info("Saved embedding store to {}", path); + } catch (IOException e) { + log.error("Failed to save embedding store", e); + } + } + + public EmbeddingModel getEmbeddingModel() { + return embeddingModel; + } + + public InMemoryEmbeddingStore getEmbeddingStore() { + return embeddingStore; + } +} diff --git a/src/main/java/de/shahondin1624/rag/TestDataGenerator.java b/src/main/java/de/shahondin1624/rag/TestDataGenerator.java new file mode 100644 index 0000000..33ee34d --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/TestDataGenerator.java @@ -0,0 +1,99 @@ +package de.shahondin1624.rag; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; + +public class TestDataGenerator { + + public static void main(String[] args) { + Path root = Paths.get("test-data"); + + try { + // 1. Create Directories + Files.createDirectories(root.resolve("docs")); + Files.createDirectories(root.resolve("examples")); + + // 2. Generate Documentation (Markdown) + createFile(root.resolve("docs/syntax_guide.md"), """ + # DSL Syntax Guide: DiagnosticService + + To define a diagnostic service in the OTX/ODX abstraction layer, use the `DiagnosticService` keyword. + + ## Syntax + ```dsl + DiagnosticService { + request: + response: + timeout: ms + } + ``` + + ## Rules + * The service name must be UpperCamelCase. + * Timeouts are strictly defined in milliseconds. + * Use the `extends` keyword to inherit properties from a base service. + """); + + createFile(root.resolve("docs/units_manual.md"), """ + # Working with Units + + The DSL strictly types physical units to prevent conversion errors between OTX and ODX. + + ## Defining a Unit + Use the `Unit` keyword followed by the display symbol. + + Example: + `Unit Speed [km/h]` + + ## Common Errors + Never use string literals for units in a `DiagnosticService`. Always reference the typed Unit definition. + """); + + // 3. Generate Code Examples (.dsl) + createFile(root.resolve("examples/powertrain.dsl"), """ + // Example: Reading Engine RPM + + package com.vehicle.powertrain + + Unit Rpm [rotations/m] + + DiagnosticService ReadEngineSpeed { + request: 0x22F40C + response: 0x62F40C + timeout: 500 ms + return: Rpm + } + """); + + createFile(root.resolve("examples/body_control.dsl"), """ + // Example: Door Lock Control + + package com.vehicle.body + + DiagnosticService LockDoors { + request: 0x2E0101 + response: 0x6E0101 + timeout: 2000 ms + } + + DiagnosticService UnlockDoors extends LockDoors { + request: 0x2E0100 + } + """); + + System.out.println("✅ Test data generated successfully in: " + root.toAbsolutePath()); + + } catch (IOException e) { + System.err.println("Failed to generate test data: " + e.getMessage()); + e.printStackTrace(); + } + } + + private static void createFile(Path path, String content) throws IOException { + Files.writeString(path, content, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); + System.out.println("Created: " + path); + } +} \ No newline at end of file diff --git a/src/main/java/de/shahondin1624/rag/tooling/RagEmbedTool.java b/src/main/java/de/shahondin1624/rag/tooling/RagEmbedTool.java new file mode 100644 index 0000000..0afdc6a --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/tooling/RagEmbedTool.java @@ -0,0 +1,82 @@ +package de.shahondin1624.rag.tooling; + +import de.shahondin1624.rag.LocalRagService; +import io.modelcontextprotocol.spec.McpSchema; +import mcp.tools.DefaultMcpTool; +import mcp.tools.McpValidatedTool; +import mcp.tools.helper.SchemaBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Tool for embedding new information into the RAG service. + */ +@DefaultMcpTool() +public class RagEmbedTool extends McpValidatedTool { + private static final Logger logger = LoggerFactory.getLogger(RagEmbedTool.class); + + @Override + public String name() { + return "embed_information"; + } + + @Override + public String title() { + return "Embed Information"; + } + + @Override + public String description() { + return "Embeds new information into the local vector store to make it available for future searches."; + } + + @Override + public McpSchema.JsonSchema inputSchema() { + return new SchemaBuilder() + .addProperty("content", "string", "The information to embed") + .addProperty("metadata", "object", "Optional metadata to associate with the information (key-value pairs)") + .required("content") + .build(); + } + + @Override + public Map outputSchema() { + return new SchemaBuilder() + .returns("string", "A success message") + .buildMap(); + } + + @Override + protected boolean isReadOnly() { + return false; + } + + @Override + public McpSchema.CallToolResult callValidated(McpSchema.CallToolRequest request, Map arguments) { + String content = (String) arguments.get("content"); + @SuppressWarnings("unchecked") + Map rawMetadata = (Map) arguments.get("metadata"); + + Map metadata = null; + if (rawMetadata != null) { + metadata = new HashMap<>(); + for (Map.Entry entry : rawMetadata.entrySet()) { + metadata.put(entry.getKey(), String.valueOf(entry.getValue())); + } + } + + logger.debug("RagEmbedTool called with content length: {}, metadata: {}", content.length(), metadata); + + try { + LocalRagService.getInstance().indexDocuments(List.of(content), metadata); + return successResult("Information successfully embedded and indexed."); + } catch (Exception e) { + logger.error("Error during information embedding", e); + return error("Error during information embedding: " + e.getMessage()); + } + } +} diff --git a/src/main/java/de/shahondin1624/rag/tooling/RagSearchTool.java b/src/main/java/de/shahondin1624/rag/tooling/RagSearchTool.java new file mode 100644 index 0000000..d1a5a8a --- /dev/null +++ b/src/main/java/de/shahondin1624/rag/tooling/RagSearchTool.java @@ -0,0 +1,63 @@ +package de.shahondin1624.rag.tooling; + +import de.shahondin1624.rag.LocalRagService; +import io.modelcontextprotocol.spec.McpSchema; +import mcp.tools.DefaultMcpTool; +import mcp.tools.McpValidatedTool; +import mcp.tools.helper.SchemaBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Map; + +/** + * Tool for searching indexed documents using RAG. + */ +@DefaultMcpTool() +public class RagSearchTool extends McpValidatedTool { + private static final Logger logger = LoggerFactory.getLogger(RagSearchTool.class); + + @Override + public String name() { + return "search_dsl_documentation"; + } + + @Override + public String title() { + return "Search DSL Documentation"; + } + + @Override + public String description() { + return "Searches locally indexed documents and documentation for relevant information using vector search."; + } + + @Override + public McpSchema.JsonSchema inputSchema() { + return new SchemaBuilder() + .addProperty("query", "string", "The search query") + .required("query") + .build(); + } + + @Override + public Map outputSchema() { + return new SchemaBuilder() + .returns("string", "The retrieved text segments") + .buildMap(); + } + + @Override + public McpSchema.CallToolResult callValidated(McpSchema.CallToolRequest request, Map arguments) { + String query = (String) arguments.get("query"); + logger.debug("RagSearchTool called with query: {}", query); + + try { + String result = LocalRagService.getInstance().search(query); + return successResult(result); + } catch (Exception e) { + logger.error("Error during RAG search", e); + return error("Error during RAG search: " + e.getMessage()); + } + } +} diff --git a/src/main/resources/rag-index.json b/src/main/resources/rag-index.json new file mode 100644 index 0000000..9e21a7d --- /dev/null +++ b/src/main/resources/rag-index.json @@ -0,0 +1 @@ +{"entries":[{"id":"0f200c40-69b3-49cd-875d-6e07a3c97b3c","embedding":{"vector":[-0.064206034,-0.02925363,0.03183024,-0.012679343,-0.038069684,-0.056619976,-0.007611033,0.06682047,-0.006068813,-0.062486842,-0.06707647,0.10668073,-0.07032362,-0.057482116,0.040299013,-0.007622326,0.024363846,-0.017898336,-0.0077830916,-0.037151136,0.14432535,0.021241566,-0.079601675,-0.027839545,-0.008507566,0.0022261182,0.003697777,0.041991245,0.074419804,0.014742917,-0.04763929,0.05627659,0.09175887,0.023219796,0.04250865,-0.034986064,0.11583923,0.05513612,-0.02529663,0.004257078,0.06454599,-0.06430701,-0.034243472,0.041741226,-0.01565716,-0.017793547,-0.10570321,0.037298705,-0.0384591,-0.020434465,-4.549252E-4,0.04560257,-0.04487261,0.06492032,0.013546004,0.04756975,0.013538594,0.032611918,-0.019219562,0.0038268142,-0.025915757,0.042073447,-0.100042425,0.011035449,0.013786574,0.057456248,-0.0012956593,0.070221186,0.043781597,-0.007907992,-0.16730116,-0.0043620705,-0.003284353,0.02571217,-0.018136507,-0.0025521,0.01970653,-0.03197174,0.057535835,-0.06790277,-0.00790481,0.011921321,0.03445908,0.11505207,-0.016488682,0.03597768,-0.00638731,0.031125901,0.040335104,-0.003653015,-0.008500034,-0.034781303,-0.039190214,-0.0037642224,-0.024201838,0.046187744,0.012613972,-0.08747491,-0.03546079,0.06303944,0.0022893152,-0.08244986,0.04938226,-9.87781E-4,-0.07545533,-0.046620425,0.0071316767,-0.015278909,0.061312225,-0.03842586,-0.009913555,0.029255003,-0.08659116,-0.045816198,0.0054572765,-0.10238571,-0.072191425,0.038326886,0.114025034,-0.14430988,-0.07843484,0.00943602,-0.028907385,0.028392881,0.06942439,-0.057782087,4.5940967E-4,-1.1443168E-33,0.05824646,0.04568838,-0.062044587,0.087154046,-0.0091205835,0.009132908,0.07367605,0.049077507,-0.06802514,0.10870833,-0.04138536,-0.0015157873,-0.030569503,-0.016334312,-0.035740864,-0.046572346,0.0051745893,0.019904742,0.04103613,-0.0456571,0.06648159,0.031180896,0.044215772,0.026775299,0.06672382,0.09225378,-0.022783257,-0.009203708,0.08182446,0.03887761,-0.00873835,-0.04933395,0.015162131,0.044206273,0.07972204,0.09081587,-0.07637747,0.011267247,-0.046178397,-0.045408227,-0.023291936,-0.015820956,-0.10686482,-0.043692738,-0.011930274,0.03899721,0.02254638,-8.0540014E-4,0.039234918,0.032075524,-0.024311652,0.041980587,-0.024145061,0.02793652,0.07178125,-0.05314131,0.008100742,-0.0030657037,0.03715249,0.12441626,0.0030944191,-0.019188648,-0.04474352,-0.06536597,0.014932553,-0.014110923,-0.049207058,-0.047222536,0.004929301,-0.016022466,-0.02247108,0.08859164,0.011149003,0.07757454,-0.0185348,0.016910259,0.012622731,0.04492868,-0.0056987917,0.009531059,-0.10599913,-0.020226792,0.012730581,0.041620813,0.055372458,0.044275243,0.09853948,-0.019714825,-0.04215707,-0.01202013,-0.052064247,-0.016578842,-0.09159159,0.065446,0.017070742,-2.4716821E-34,-0.034587156,-0.020013005,-0.01861652,0.057354588,-0.116282076,-0.052297805,0.037821427,0.030638734,0.13170199,-0.0069903703,0.008837622,0.02031995,-0.0046920637,0.010431101,-0.022442997,-0.043441527,-0.13743812,-0.046480358,-0.044051345,0.023116974,-0.048568472,0.043476507,-0.004321856,0.030341856,0.014316281,-0.047874052,0.044410888,0.03761252,-0.01995691,-0.0012358152,0.029386958,0.051993255,0.037784074,-0.026718576,-0.045077,-0.005979611,0.084252626,0.070195295,0.0058055073,0.021438483,0.04682161,-0.007882678,0.038562443,-0.017790277,-0.0068164174,0.018605057,0.003868334,-0.03822004,-0.023972362,-0.018397862,0.05931278,-0.07136895,-0.032871775,-0.042341147,0.0047158203,0.030485345,0.0883582,-0.022751786,-0.05905481,-0.030386228,0.009639183,-0.021159224,-0.023535278,0.07735838,0.030610858,-0.06680862,-0.008630208,-0.06853322,-0.029720817,0.016980747,-0.03475265,-0.010719847,-0.040049665,-0.0017969799,0.024121368,-0.14716692,-0.044805933,0.08200875,-0.012708462,0.08792484,-0.038113408,0.059727535,-0.085145086,0.04819998,-0.054052792,0.017007092,0.14163598,0.049511254,-0.036629356,-0.01707806,-0.1288888,0.04909408,-0.10587848,0.16249564,-0.035716925,-1.343618E-8,-0.044025965,0.06977073,-0.022447,-0.007694455,-0.0039672195,0.11158303,0.02681677,-4.4286324E-4,0.027506992,0.05041661,0.0013480139,-0.0020500717,-0.03435209,-0.02193482,-0.0040018805,-0.013752439,-0.015642196,-0.020197943,7.830961E-6,-0.041244585,0.051245194,3.535991E-5,-4.9235916E-4,-0.039414957,0.12396792,-0.030062856,0.01598088,0.106837675,0.0065345946,-0.022932408,0.023278894,0.03561508,0.012912005,-0.018264944,-0.037127875,0.030684145,-0.03069493,0.051610347,0.09315794,0.014797897,-0.058304906,0.07611502,-0.036433827,0.0064563868,0.06472646,0.007563111,-0.050485663,0.033733066,-0.02937312,-0.039722145,-0.032142036,0.016353821,0.011192084,0.04130724,-0.0076525,-0.009533815,0.00823096,-0.06512026,-0.04136279,0.009995669,-0.04779992,0.07155923,-0.045849916,-0.017712248]},"embedded":{"text":"# DSL Documentation Guide","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"44e76b4b-b3ef-4856-9d56-6a34c1528470","embedding":{"vector":[-0.03573902,-0.03730629,-0.07217446,-0.00833133,0.002477057,-0.055703644,0.071786836,0.08761174,-0.023163116,-0.028730765,0.0073180795,0.0386027,0.031467497,0.045532107,-0.033056296,-0.038328584,0.008014311,-0.05868527,-0.0073687267,-0.025869086,0.068902776,0.118084,-0.14277816,0.021851588,-0.07932532,0.015614492,-0.020518038,-0.0204187,0.039503206,-0.009316909,0.020790545,0.011101707,0.048010916,0.040911265,0.043218262,0.024811395,0.09712842,0.02598209,-0.066934384,-0.063200146,0.05527971,-0.06814264,-0.054983635,0.0022414192,-0.008811581,-0.03005378,-0.11578854,-0.010260366,-0.032421317,-0.018500715,-0.031401828,-0.050781492,0.017442552,0.050229024,0.039139308,0.014432791,0.0022886547,-0.065853745,-0.07406831,-0.0084919715,-0.0845645,0.020079793,-0.04366436,0.023733985,0.077764615,0.075946584,-0.005188085,-0.0047762464,0.03966691,0.022774948,-0.12246991,0.003979584,0.02440894,0.053843115,-0.034599807,0.050678633,0.005805582,-0.04641329,0.0609817,-0.052823644,-0.029072879,0.02422621,0.030963723,0.08728161,0.0147506,0.090109855,-0.006048053,-0.04535459,0.061468765,0.03573945,0.009239462,-0.07196826,-0.029428648,-0.0046458985,-0.05857019,-0.019164545,0.05428921,-0.03369177,0.015555338,0.019961394,-0.020611048,-0.06922413,0.06950787,-4.7565124E-4,-0.05027642,-0.06631224,-0.0050560688,-0.024480999,0.05267161,-0.062173266,-0.037082274,0.044687845,-0.006737955,-0.0999733,0.030646151,-0.05968737,-0.010917028,0.041650523,0.029598817,-0.0731561,0.007769245,-0.027908659,-0.011877209,0.0038268028,0.15323529,0.0344198,-0.01904183,-7.336817E-34,0.026439674,-3.9414119E-4,-0.018495657,0.036861926,-0.0060406365,0.021191593,-0.029424472,0.035674583,0.0020060858,0.09272897,0.01690181,0.073498175,-0.007604756,-0.06260148,-0.008986711,0.008508424,0.048584174,0.039511204,-0.075002104,-0.01385387,0.015907962,-0.010573757,0.019717973,0.031903055,0.053970315,0.06337228,0.018666923,0.013383389,0.06855561,0.009586759,0.007298456,-0.029267177,-0.015080798,0.099461555,0.010116308,0.0062828683,-0.07276713,0.0049400427,-0.037339814,0.0096199205,-0.013985425,-0.051590797,-0.09652394,-0.004568329,0.041703794,-0.020675026,-0.0741138,0.0084816,0.00889116,-0.036806844,0.01891102,0.05810821,0.08836296,-0.005005101,0.07459556,0.011315542,0.04145265,-0.019857364,0.03410302,0.048746318,0.00541534,-0.06370869,-0.010506961,-0.027449194,0.03132112,-0.034498397,-0.018413754,-0.03249369,-0.016425215,0.032786492,-0.072742105,0.03405884,0.060719352,0.12345465,0.022051439,-0.023932757,-0.0035434405,-0.018805586,-0.078649975,-0.024977714,-0.10579994,0.0040150713,0.022481741,0.08876174,0.08307158,-0.0057661175,-0.028411582,0.03390453,-0.10184011,-0.057539325,-0.0669181,0.024406424,-0.04038217,0.110250525,0.008291015,-1.3004908E-33,-0.021269325,0.004562023,-0.07428113,0.03454938,-0.12197448,-0.08604732,0.01280034,0.03274384,0.016152713,-0.010694705,0.038392097,-0.008289182,-0.05855511,-0.02711902,-0.059477087,0.06057645,-0.18588902,-0.06381972,-0.04423046,0.04009322,-0.08931005,0.06141656,0.030460054,-0.015872817,-0.07748801,3.4273806E-4,0.08128412,0.07461392,-0.017762065,-0.009795874,0.039511137,0.064616024,0.063840024,5.59311E-4,-0.034394253,-0.009900721,0.09259519,-0.024296006,0.0103208,0.06866533,0.03554036,0.04595242,0.028725041,0.0017268405,-0.006811041,0.06694563,-7.6480355E-4,-0.040068276,0.009189199,-0.020435497,0.029393299,-0.08564843,-0.016687158,0.021523068,-0.042620223,0.021417592,0.0111176325,-0.016254876,-0.11052092,0.0081722615,0.010062554,-0.04043305,-0.029362729,0.05663241,0.0042797625,-0.016530667,0.07631184,-0.009428003,0.022497743,-0.022677923,0.016077166,0.0071350653,-0.089025185,0.026753105,0.09101682,-0.098807976,-0.069535635,-0.021606844,0.00613336,0.03402735,-0.008969076,-0.04875641,-0.039760742,0.023500377,-0.0719712,-0.027455566,0.060443033,0.07757859,0.010115707,-0.025217894,-0.058482066,0.04142859,-0.08046277,0.054139506,-0.08628729,-3.258187E-8,-0.05472983,-0.045732833,0.019104715,-0.09360559,0.012373079,0.028368765,-0.02055395,0.046386097,0.023168502,0.06700189,-0.043731175,-0.024467247,-0.043714687,-0.097106256,0.014755217,-0.05041249,-0.035630297,0.0729525,-0.06423772,-0.063273475,0.100915514,-0.007067843,0.037818972,0.0012171515,0.07879906,-0.086578734,0.061973967,0.11278635,-0.021003148,-5.6584366E-4,-0.018250495,0.085843235,0.050002698,-0.0012998545,-0.05856952,0.10999448,0.0011113842,0.022798292,0.10500158,0.03895656,-0.028939607,0.024087235,-0.053332794,0.008669531,-0.029691637,0.017896574,-0.03376018,0.0015757084,0.032847844,-0.093076155,-0.033144582,0.019835489,0.054720953,0.1166421,-0.034145124,-0.02644258,0.061187427,-0.046689965,0.036350533,0.053954132,-0.0054041166,0.02495762,0.07023852,-0.0690968]},"embedded":{"text":"## DiagnosticService\nThe `DiagnosticService` is the core component for managing diagnostics in the system.\nIt allows you to define diagnostic rules and actions.\n\nExample:\n```dsl","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"287e6d10-07c3-465b-ba1c-b8b7499daf6e","embedding":{"vector":[-0.021666087,0.017281983,-0.0076881996,0.008049824,0.08973859,-0.009542086,0.09469945,0.030720009,-0.03157124,-0.007432379,-0.01042299,-0.09834866,0.056850884,0.06113289,-0.047555976,0.021735169,0.021217214,-0.08061479,-0.025908938,-0.06620167,0.06778765,0.06757606,2.7355304E-4,0.054199174,-0.107185334,-0.025348281,-0.035689514,-0.02648655,-0.026852198,-0.025302233,0.056185354,-0.04917193,-0.081669904,-0.005388954,0.07696774,-0.019904068,0.03607483,-0.05554819,-0.02982461,-0.0345878,0.062636144,-0.07734788,-0.06898621,-0.06096203,0.033635877,-0.039336983,0.017020885,-0.01990843,0.024064574,-0.045558024,-0.017880322,-0.11459415,0.060933415,-0.05754415,0.07737561,0.01916359,-0.093531325,0.034444783,-0.06055757,-0.0027186186,0.033114173,-0.059990205,0.013342238,-0.020435859,0.025700923,0.0786637,-0.043936662,-0.038726192,-0.04126793,0.03672588,-0.043425366,0.026543811,0.04537243,-0.006837103,-0.0553675,0.029324396,0.05511222,2.3502753E-5,0.017315842,-0.037712973,-0.1004801,-0.06713722,-0.0028415043,0.04106255,0.10554678,0.019141605,-0.020788103,-0.019643804,-0.014188519,0.02936313,-0.0012164619,-0.054598264,-0.038878396,0.06320162,-0.054074936,0.0022684673,-0.04824106,-0.0505157,0.008503638,0.035323925,-0.02431163,-0.041391592,0.0031552017,0.05550403,0.04020978,0.022158492,-0.054562185,0.096729316,0.018208286,-0.016218979,-0.0016867842,-0.013288076,0.065279156,-0.018887242,-0.034322433,0.0063674,0.008174649,0.059990175,0.0010687188,0.015160966,0.061118435,-0.015421059,0.013144479,-0.008024716,0.17927472,0.021706717,0.041517537,4.6021687E-34,0.015823362,0.002123753,-0.050197396,0.05739579,0.035366457,-0.032885745,-0.020065317,0.005454151,-0.027902437,0.009120604,0.076422244,0.01321367,-0.0020469134,-0.12588713,-0.0044017155,0.01782604,0.06469633,0.007876018,-0.0611547,-0.034198705,-0.025579436,-0.082652315,0.0114736175,0.007737263,-0.021118285,0.013452294,0.025181515,-0.0077725747,0.056013,0.019012297,0.04017099,-0.0027104898,0.06587038,0.084327556,-0.023195582,-0.012837669,-0.03245751,-0.009898806,-0.0045796875,0.0043132915,-0.017636256,-0.027491337,-0.10491007,-0.040370192,0.020606564,-0.002225179,-0.01364342,0.043336168,0.10868613,-0.040979814,0.019239673,-0.01608655,0.07877441,-0.006360906,0.07814696,0.090988554,-0.017407859,0.1026277,0.032146454,-0.05740465,-1.8214577E-4,-0.035031687,0.0109549,-0.08097437,0.053928506,0.005108128,-0.02224638,0.021167345,-0.04467978,-0.035589397,-0.021646988,-0.004635608,0.06299743,0.09970892,0.05880798,-0.08802837,0.01813699,-0.029292934,-0.023101453,-0.10105813,-0.038987853,-0.07346367,-0.048076354,0.06736632,0.018658847,0.044377178,-0.017082797,0.11697014,-0.1375184,0.046127386,-0.029671602,0.002799802,0.032264985,0.021581143,-0.036602065,-1.5448811E-33,0.028245842,0.012870201,-0.08722494,0.032621253,-0.016574012,-0.028602576,0.03225194,0.04057173,-0.020796772,0.04484157,0.046861984,-0.016349154,-0.055628084,0.009284278,-0.18233968,0.015134023,-0.07517589,-0.039366044,-0.014670537,0.0307342,-0.007991306,0.04895957,0.02100402,0.011123258,-0.1267556,0.031949796,0.015058342,0.031484794,-0.10347756,-0.04644782,0.047000322,0.037595365,-0.012628944,0.02010003,0.042718012,-0.045641493,0.06972119,-0.07367136,-0.054190442,0.10726655,0.014912998,0.037096918,0.0048018764,-0.037660614,-0.0066799186,0.044572674,0.08716498,-0.056078907,-0.03192815,-0.005204627,0.03584808,-0.04570712,0.05600023,0.10336615,-0.08899102,0.06561592,0.024731224,-0.013058215,-0.10657328,0.079636365,-0.0020095387,-0.07069263,-0.021473333,0.036797725,-0.033617023,-0.037832882,0.034179274,0.083661854,0.18383163,-0.024972912,-0.008630703,-0.007525585,-0.055969194,0.02404175,0.03240836,-0.034647215,-8.294651E-4,-0.09044499,0.013878576,-0.028462682,-6.942939E-5,-0.056569066,0.036535498,-0.03884079,0.0021440668,-0.013886517,0.04093314,0.048222132,0.0081700785,-0.013536428,-0.021438055,0.04727936,0.013731252,-0.07358832,-0.047991395,-3.3208625E-8,-0.022982856,0.030659802,0.015783422,-0.10684087,0.052084442,-0.03631313,0.045648366,-0.03115935,-0.031696875,-0.027727224,-0.06704139,1.2679507E-4,-0.016634261,-0.015728347,0.052210335,-0.06678271,-0.06934747,0.07218671,-0.050223988,8.210244E-4,0.05628787,-0.0391796,0.0028053338,0.014839483,0.066668466,-0.04278156,0.009138808,-0.01721217,-0.008829478,0.017218772,-0.06752211,0.04356754,0.09932534,-0.0037323255,-0.018741604,0.08581001,0.05507213,-0.009419805,0.035324175,0.056929797,0.038885254,0.038000397,-0.041720778,-0.03712279,0.0024136615,0.07411889,0.0077734175,-0.05360311,-0.013092348,0.008711659,0.01264113,-0.021673711,0.036625877,0.07659555,-0.09461146,-0.07136143,0.072814964,-0.018162847,-0.052812655,-0.022728765,0.09507794,0.01952296,0.09876118,-0.04720121]},"embedded":{"text":"DiagnosticService {\n rule \"CheckEngineLight\" {\n condition: engine.status \u003d\u003d ERROR\n action: notify(\"Engine error detected\")\n }\n}\n```","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"5d014468-200a-4ae2-b9f4-c3fc1f37585d","embedding":{"vector":[-0.024573512,-0.09481421,0.012704845,-0.014725921,0.0011042925,-0.06925957,0.10548743,-0.058607195,0.08540852,-0.03479934,-0.06460883,0.01974976,0.023838852,0.06303214,0.080347985,-0.02985834,0.060657967,-0.06515679,-0.07103316,-0.07144637,0.12286368,0.04864099,-0.075108476,0.07120489,-0.015362454,-0.085106306,0.010265732,0.045886077,0.03871755,-0.011306089,0.037861653,0.04619728,0.04935637,-0.0045958157,0.007583329,-0.027269974,0.03760097,0.0477116,-0.024769781,0.02343254,0.07760258,-0.063313514,-0.023953546,0.04401568,-0.026735503,-0.03184933,-0.07836842,0.02877967,-0.06592112,-0.023814144,0.03257333,-0.09888764,0.0142953945,0.11080654,0.02317767,-0.01256503,-0.065910675,0.06682748,0.018183723,0.029311912,-0.033491574,0.019277824,-0.019630227,0.0056599663,-0.03438023,0.04782048,-0.057729032,0.054165002,-0.026745627,-0.048378173,-0.03246296,0.010402118,0.043216508,0.015450177,0.081661925,0.023023803,0.04034183,-0.049391065,-0.012384904,-0.058032386,-0.041718908,-0.0036325806,-0.01819232,0.030672753,0.028849484,0.035678096,-0.042298004,-0.034566116,0.017295135,0.04393038,-0.07897883,-0.03257725,-0.029901404,0.028107418,-0.16311546,0.02141064,-0.026046898,-0.06940064,-0.05273765,0.015635256,0.020233076,-0.03488505,0.048261356,0.06467978,0.00847581,-0.093176894,-0.08944384,0.026309865,0.070184134,-0.03180161,-0.059333656,-0.01730928,1.42836E-4,0.01408375,-0.037990652,0.007859907,0.0026667174,0.07409888,0.09963614,-0.08404582,-0.031121489,-0.07143949,-0.05331883,0.03216028,0.034987517,0.04738987,0.024515979,3.0433165E-33,0.015513614,-0.001230507,-0.05082863,0.049043957,0.0055149193,-0.016583852,-0.005784518,0.016675955,-0.016566383,0.050998252,-0.053885315,0.04332173,0.0046661617,-0.018906606,-0.040667053,-0.06528358,0.02012028,0.016715452,-0.008974128,-0.04646641,-0.011444995,0.08526889,-0.039934654,-0.0118591655,0.060606156,0.041142657,0.059441444,-0.036683872,0.0581646,0.037645258,0.042702317,-0.0021024535,0.034385607,0.06720473,-0.014412731,-0.005582015,-0.057170186,0.011253906,-0.027015978,-0.04006538,0.040693384,-0.032044798,-0.1690718,-0.038928095,-0.019147987,0.0053766607,-0.0070654154,-0.020016318,0.0811622,0.024476562,0.064768635,0.031865496,0.01161317,0.037660062,0.106357396,-0.015467219,-0.027072301,0.026638366,0.062037446,0.024093827,-0.04114291,-0.08420612,0.028247256,-0.11039364,0.123158604,0.035087388,0.027038379,0.0057547605,-0.078343764,0.04021106,-0.073245205,0.1087297,0.04162878,0.076892994,-0.047231693,-0.004041229,-0.027838688,0.009490377,-0.02927319,0.025378436,-0.049986184,0.0040497594,0.014353689,0.06368347,0.08502903,0.06721049,0.03854983,-0.019162327,-0.09868536,0.019932758,-0.051945742,0.06096762,0.0033984438,0.11418111,-0.04927798,-3.5292837E-33,-0.10752849,0.024659583,-0.097132094,0.018232934,-0.10511411,-0.11922136,-0.008732155,0.033270355,0.0361424,0.029825848,0.033422437,-0.03170142,-0.043209065,0.06366602,-0.07863493,-0.038156014,-0.037705533,-0.016918082,-0.10044297,0.015260279,-0.08896711,0.04249793,4.29088E-4,0.022513928,-0.032720406,0.007857559,0.07106782,0.09260633,6.6062756E-4,-0.060480334,0.033165142,0.03361513,0.055547085,-0.0013756693,0.015557216,-0.014136478,0.08277692,0.062395032,-0.03069164,0.011716692,0.03403921,-0.009055049,0.025973324,0.007165512,-0.05119905,0.07996487,0.023148961,-0.03890309,-0.09877842,0.036169253,0.04695391,-0.06467082,0.0059169997,0.061904363,-0.024680905,0.061559178,0.07639827,0.044304073,-0.041695777,-0.110445976,0.031867474,-0.09579801,0.015747983,0.0052719763,0.060389906,-0.027617114,0.05147287,-0.039842773,0.025554936,0.019889321,0.07969794,-0.0036116866,-0.1174797,-0.020063907,0.0075487727,-0.06058503,-0.038063236,-0.024000868,-0.051689386,0.014708861,-0.060886953,0.03075176,0.0031466584,-0.07276338,-0.04288444,0.01731504,0.10073036,0.08671813,0.042903494,-0.013376672,-0.03587274,0.109149545,-0.0064802356,0.041315667,-0.0082101645,-2.992958E-8,-0.020136427,-0.026042216,-0.09107276,-0.025155777,-0.009440125,0.06178133,-0.005677576,-0.00548358,0.0010005927,-0.029247863,-0.048568085,-0.020409519,-0.007895846,-0.024205131,0.052605193,-0.065549836,-0.008380604,-0.04265896,0.030735493,-0.06056508,0.059988685,0.00728582,0.013740425,-0.019503584,0.034840677,-0.034741357,0.010035178,0.09434798,-0.034237504,-0.040195905,-0.010703901,-0.024912355,-0.009639469,-0.040468626,-0.064457044,0.118838094,-0.037715167,-0.029415531,0.05024517,0.047966883,0.025064172,-0.06855979,-0.074379265,0.030289851,-0.008091452,0.037091732,0.026863975,0.011740989,0.07444346,-0.03554636,-0.020887109,0.010371051,0.02665836,0.007560016,-0.0061989883,-0.06263604,0.036448214,-0.09114578,4.1767178E-4,0.056078557,-0.0012247856,0.03605536,-0.0021139218,-0.03989882]},"embedded":{"text":"## NotificationService\nThe `NotificationService` handles sending notifications to various channels.\n\nExample:\n```dsl","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"7305d177-10b3-46c8-b3b6-031f98aa7b7a","embedding":{"vector":[-0.0023021356,-0.04671147,0.01628659,-0.03944157,0.031467054,-0.07540068,0.11659026,-0.023572184,0.0354389,0.0060728695,-0.05672664,-0.030808002,0.04920551,0.15228634,0.09753241,0.05760399,0.00943114,-0.056427393,-0.007945234,-0.057486113,0.11094238,0.024806784,-0.009871366,0.04795981,-0.016855163,-0.12001075,-0.018671291,0.056384064,-0.039014682,-0.0029022638,0.13500273,-0.059761368,0.034887645,-0.059052654,0.046853088,0.044537667,0.062422346,0.057427663,0.02351873,0.01043483,0.0339729,0.017338382,0.05496697,-0.0416675,0.040970195,-0.003339682,0.05731255,-0.048916403,-0.056670375,-0.01751115,0.040079348,-0.14855231,0.01277776,0.038948696,0.0048435554,0.055975225,-0.09706989,0.06831009,0.020708282,0.021209575,-0.0024270832,-0.06141315,0.018680675,-0.021724809,-0.015774736,-0.07602748,-0.02084827,0.017932463,-0.052201692,-0.03763458,-0.014113999,0.008286684,0.009913863,0.012652838,0.09146167,0.050013848,0.028350495,0.04141788,-0.037902076,0.04046456,-0.05764238,-0.032497875,-0.014025226,-0.0013783404,0.04387525,0.07655783,-0.06808168,-0.078930385,-0.016999906,0.09511429,0.022036493,-0.025628373,-0.059822157,-0.015209573,-0.061881367,0.04184001,-0.053787734,-0.05353578,-0.10968231,0.040138144,0.029789358,0.009721571,0.044017233,0.073660985,0.07307763,-0.08871395,-0.05926118,0.09481296,0.0036583226,-0.04276121,-0.012802482,-0.0017091272,-0.03454238,4.8666444E-4,-0.04598296,-0.017469391,-0.029037965,0.031145608,0.04796957,0.022077447,-0.025181692,-0.107872374,-0.09906684,0.020002399,-0.0012940546,0.04569238,0.077283114,-1.0664179E-33,0.01930178,0.07316165,0.014860824,0.020035958,0.023583692,-0.035068307,-0.067769505,-5.6116376E-4,0.030330831,-0.0070871706,-0.0030866836,0.057241477,0.08957152,-0.039910007,-0.083583914,-0.0048945057,-0.008959108,0.042813804,-0.015993532,-0.10164773,-0.06648296,0.07311734,-0.06747293,0.008099519,0.07069463,8.911015E-4,0.12310201,0.0039870287,0.060044277,0.021823473,0.022044448,-0.03239935,0.02698652,0.06373961,0.052489206,-0.0073553957,0.0111751435,0.015898045,-0.011994117,-0.06135686,0.0667719,-0.006134451,-0.034107674,0.024078809,0.006485113,-0.01971591,0.12118358,-0.012461865,0.16657507,-0.04814604,0.06553724,-0.051724534,-0.017576454,0.01946105,0.0726536,0.021834034,0.015945947,0.03383748,0.023650382,-0.05838925,-0.08518342,0.0013199999,0.093727104,-0.056075893,0.0707961,-0.03108407,-5.8304856E-4,-0.037041355,0.025855348,-0.0063381717,-0.058124617,-0.03757523,-0.021464558,0.07148911,-0.09388204,-0.06650409,-0.056262977,0.008489544,-0.028410787,-0.03228534,-0.025446022,-0.008409191,-0.036125846,0.13302965,0.05189208,0.032706987,0.018161312,0.06114939,-0.015343628,0.0029151414,-0.053226937,0.046178628,0.036007445,0.13001432,-0.052828386,9.091078E-34,-0.0038035684,-0.02086344,-0.077436715,-0.031090254,-0.009899641,-0.0263559,0.058477424,0.022115067,-0.0091020325,-0.012062682,-0.019374488,-0.009341128,-0.040192872,0.093449645,-0.1234863,0.0122479275,-0.037234645,-0.006762101,-0.056438606,-0.053266402,-0.10800264,0.06353949,0.058747336,-0.015249321,-0.10027572,0.022810366,0.065146,0.030607654,-0.029096901,-0.047043856,-0.03598514,0.009106185,-0.01948798,0.08754856,-0.042579666,-0.05614636,0.042363852,0.017088838,0.038023412,-0.026736604,0.076595515,0.061361644,0.016513765,-0.005300199,-6.7116175E-4,0.07631542,0.06973198,-0.04398606,-0.07646941,0.09735557,-0.031938728,-0.0021785186,0.051342454,-2.9092547E-5,-0.026748192,0.015122419,0.032463714,0.030084515,0.044909373,-0.059862215,-0.018903878,-0.061856568,0.07200548,0.03113723,0.04022801,-0.0036926216,0.0119068865,0.050498515,-0.003547432,-0.037141085,0.06430139,-0.040591426,-0.09904699,-0.031442914,-0.0035812901,-0.017529486,0.028013812,-0.031208899,-0.02932141,0.0032557377,-0.05288413,0.0016435232,-0.046295986,-0.07144848,-0.045918982,0.014504615,0.042547524,0.011404054,0.034705617,5.6684157E-4,0.0405058,0.057222907,0.032164574,-0.05374426,-8.2413515E-4,-2.606503E-8,-0.023149611,-0.016935863,-0.014144238,-0.023916889,0.0077191503,-0.019598704,0.033959296,-0.02305188,0.010882757,-0.014343608,-0.035316,-0.008500912,-0.041086197,-0.0060958047,0.011838392,-0.055195417,-0.05618301,0.0053603207,0.011194268,0.011028083,0.060921263,-0.007515671,-0.0077978796,-0.062633544,0.017189784,-0.0106992,-0.028501436,0.0054648817,-0.040114224,0.026647061,-0.040421322,-0.045437705,-0.005903599,-0.041910134,-0.06555111,0.06924273,-0.028045801,-0.13264638,0.02082176,0.008550732,0.063101396,-0.090552405,0.028030721,-0.027760863,-0.030596858,0.09831504,0.11017679,0.00510431,0.10986618,-0.016801706,-0.018130932,0.009301503,0.0038671137,-0.026786916,-0.09686371,-0.02181429,0.01685649,-0.08311574,-0.037461724,-0.028796276,0.020863837,0.008410611,0.006853361,-0.03507604]},"embedded":{"text":"NotificationService {\n channel \"Email\" {\n address: \"admin@example.com\"\n }\n}\n```","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"d2323d4f-5e5a-4d42-9c44-485b31408000","embedding":{"vector":[-0.094665386,-0.0014108176,-0.031650174,-0.02004688,-0.059109375,-0.12020615,0.02246819,0.037874226,0.058642093,-0.015857033,0.007164266,0.047136385,-0.04040846,-0.044814274,0.0030250708,-0.0048004654,-0.025462398,-0.034850545,-0.028946858,-0.10186013,0.10879659,0.0118237,-0.13938548,-0.027885921,0.03466672,0.033052202,-0.016573206,0.04048582,0.07811129,-0.0328285,-0.025996367,0.030028135,0.02981966,0.063303776,-0.029733945,0.014961167,0.06658026,-0.050623454,-0.062372793,-0.028918827,0.09102471,-0.044108894,-0.037535235,0.015847895,-0.0501381,-5.6697987E-4,-0.06987213,-0.013628648,-0.07778802,0.011820604,-0.07853879,0.035670802,-0.040202923,0.12394146,0.018544653,0.02238737,0.027437532,-0.0059749284,-0.007537937,0.030806284,-0.0677717,0.0242013,-0.014347732,-0.024380013,-0.009156317,-0.008119092,-0.019102614,-0.0049953954,0.055669706,-0.053297553,-0.11410941,-0.022132713,-0.02808203,0.028158722,-0.016665105,-0.026275435,-0.0025255259,-0.06926298,0.10082079,-0.04309556,0.03867276,0.0019861083,-0.042947978,0.089385934,0.008984125,0.06221655,-0.072404966,-0.021409988,0.06037155,0.014201313,-0.059364766,-0.02917551,-0.009772561,-0.0019815555,-0.040387753,0.013355753,0.03951124,0.0060528,0.001983632,-0.008765769,9.741822E-5,0.028908122,0.090933055,2.5176076E-4,-0.070123956,-0.09671673,0.020628398,0.032465372,0.023004713,-0.091619104,-0.020240946,0.033731673,-0.03675363,-0.083555356,-0.0145042585,-0.05880773,-0.09627207,0.0034555867,-0.0096122585,-0.04702437,-0.01850687,-0.013517694,-0.10206254,0.055724975,0.04764465,-0.02119559,-0.039734777,2.271657E-33,0.012503721,-0.017966881,0.0378235,-0.0075300382,-0.02668289,0.010905504,0.028663946,-0.00484354,-0.055202566,0.09408898,-0.0538842,0.007174701,-0.016140714,0.028945146,-0.016111638,-0.07980575,0.0587054,0.028779456,0.03676653,-0.04066128,0.11982569,0.12538798,0.012400816,0.034638815,0.041997384,0.07909558,-0.027709022,-0.052519076,0.07421098,0.056212127,-0.03699029,-0.007662191,-0.05915951,0.021358449,0.064078175,-0.031724345,-0.04752365,-0.019031987,0.030297397,0.030870738,0.022234276,-5.526427E-4,-0.044444434,-0.022613779,-0.060659405,-0.00831053,0.048792496,0.061658587,0.038557343,-0.013402483,0.041048594,0.059218768,0.06675505,0.040899012,0.13140504,0.009921638,0.042053442,0.011917976,0.027976861,0.14105481,-0.09251445,0.0075834375,-0.013807102,0.015755216,0.054860163,-0.050580595,0.042081404,-0.069646336,-4.5062552E-4,0.07926582,-0.059797812,0.07506802,0.0433093,0.13513719,0.0074235285,0.033784207,-0.063999966,-0.01995462,-0.048731845,-0.0038393121,-0.10177249,0.043900266,0.015056547,0.021667127,0.02915927,0.023567403,-0.0012932018,-0.041163936,-0.013681427,-0.08834225,-0.023655022,-0.011334377,-0.026051112,0.028283224,-0.05763165,-3.0114997E-33,-0.01491315,-0.025153076,-0.05813822,0.06533522,-0.08977196,-0.07424883,0.0684668,-0.04768435,0.09168636,0.017526176,0.0070554097,-0.008695042,-0.0066490816,-0.04563185,0.06882712,-0.021480031,-0.09909332,-0.05294031,-0.102871105,0.023978174,-0.08230752,0.04590906,0.03462146,-0.009118533,0.028318627,-0.021384552,0.037318226,0.05254042,0.065183215,0.008231211,-0.029961748,0.037672605,0.03902795,-0.027154531,-0.018931253,0.0072346865,0.10131344,0.033177964,0.037377615,0.016521005,0.004804258,0.018538006,0.08370416,0.048032977,0.0050992104,0.09277918,-0.042207707,-7.739319E-4,-0.022403795,-0.03717866,0.039778177,-0.014675715,-0.05765432,-0.0021530674,0.04324005,0.02341578,0.0286891,0.017965661,-0.076947704,-0.043206118,0.017569738,-0.0997154,0.07498653,-0.02782989,-0.0052557583,0.04694677,0.027398173,-0.08661091,-0.0412503,-0.06547184,0.15150347,0.017103007,-0.03180267,-4.6315166E-4,-0.024427487,-0.10630812,-0.040108357,0.038226977,0.019469272,0.13314432,-0.02218899,0.014932842,0.00806008,0.0012402562,-0.05431397,0.031644862,0.043934032,0.04984588,-0.029001854,-0.06027116,-0.0963219,0.007045677,-0.101599164,0.12087315,-0.0143176215,-2.8379965E-8,-0.05776663,-0.05521305,-0.010378402,-0.031069884,0.00806506,0.031975057,-0.056457154,0.03964633,0.04615118,0.0031797392,0.0011120128,-0.052684747,0.05170692,-0.10734655,0.06707011,-0.02793436,0.07789176,0.0022493943,-0.015891297,-0.080402054,0.030101672,0.025615511,-0.061649773,-0.016771568,0.041870523,-0.027749337,0.025926812,0.082248054,-0.019286225,-0.031142933,0.05725358,0.041634656,0.057824086,0.016420374,0.025885565,0.051991645,0.039111044,0.06825219,0.03631801,-0.0031019892,-0.018275699,0.018864702,-0.09616043,0.05830116,-0.03967564,0.058586214,-0.006346714,0.04757324,-0.0022188216,-0.045890074,0.019158555,0.023387097,-0.033302624,0.042956993,0.0014141689,0.004783003,-0.010152199,-0.09211936,-0.022429496,0.04102073,0.011907576,0.05345474,0.022369627,-0.06135136]},"embedded":{"text":"## DataProcessor\nThe `DataProcessor` is used for processing incoming data streams.\nIt supports various transformation functions.\n\nExample:\n```dsl","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"24fcdc03-47a1-4100-b87a-6d94b72b7150","embedding":{"vector":[0.020345105,0.07156443,0.007547938,-0.00814727,-0.024860151,-0.056752324,0.060865164,0.024741424,-0.058242325,0.0362577,0.04271402,-0.067033015,-0.0030398068,-0.035206724,0.0019538722,0.04739105,-0.043989938,-0.0033540453,-0.043936193,-0.12440453,0.058861617,0.01533673,-0.04573208,-0.017493967,-0.01705943,0.082354955,-0.043832436,-0.01571432,0.03874003,-0.009694031,0.008844796,-0.012128469,0.002409752,0.053819317,0.044207405,0.013620317,0.0445376,-0.12088967,-0.036457345,-0.01458495,0.14203677,-0.01027526,-0.040479697,-0.050315723,-0.017275235,-0.019115133,0.015542433,-0.060077388,-0.0019414084,0.11197273,-0.040862594,0.04343526,0.0049165436,0.07120122,4.2281835E-4,0.01834391,-0.011155912,-0.03066873,0.008098425,-0.10247849,0.005738313,-0.05774471,0.041711044,-0.030445725,-0.0058378587,-0.02503265,-0.083712876,-0.039431594,0.0081546325,-0.061792623,0.01684625,-0.018256733,0.061521325,-0.09067654,0.02711527,-0.08612343,-0.023121927,-0.09521615,0.044716835,-0.020367095,-0.007544159,-0.07850602,-0.06436786,0.063860625,-0.001152117,0.0050844965,-0.09249585,0.0021493908,-0.005877137,-0.024391197,-0.068591565,-0.06022801,-0.030403852,0.052690674,0.0065024546,0.031619955,-0.01368184,0.011365685,0.036082264,-0.029484011,-0.06407203,-0.005132191,-0.010802134,0.035459176,-0.042140726,-0.07270297,-0.03625181,-0.0072628143,-0.09256764,0.0023484973,0.0143564325,0.035647992,0.0011045593,0.048890144,0.0036218716,4.7481305E-4,-0.060781803,0.033086985,-0.016104886,0.07017161,0.04703379,-0.005858184,-0.15850665,-0.01342736,0.0131587675,-0.0778802,0.043424763,-2.1277296E-33,-0.02555585,-0.04878318,0.029464772,-0.05520904,0.03475463,0.013074525,-0.065786585,-0.048283257,-0.025777878,0.055495765,-0.027619133,0.0090088975,-0.011549301,0.01972175,-0.05936591,-0.0394272,0.029625895,0.027403902,0.014158364,-0.022381376,0.10246401,0.07797989,-0.09066509,0.043230414,0.036066312,0.054196674,-0.10502157,0.048841793,0.010934685,0.014212846,0.006681959,0.028492356,0.03042811,-0.0016383498,0.04510311,-0.060297195,0.06082347,0.07314136,-0.030786628,0.024717469,0.084736966,0.010903503,0.032069687,-0.006293647,-0.040119782,-0.060023848,0.042823967,0.008244766,0.064446494,-0.020039232,0.04225302,-0.003957637,0.018074842,0.0013088072,0.029451147,-0.045833472,0.03079922,0.0035474407,0.025093772,0.03834834,-0.13602702,0.08193211,0.05747606,-0.051958118,0.030033935,-0.035625126,0.09443217,0.025452605,0.014881758,0.02814761,-0.085077025,0.009188458,-0.026232813,0.080182984,0.022884186,0.02414216,-0.019577986,-0.0472808,-0.10186915,-0.021324769,-0.094587,0.02224902,-0.02416831,0.036381613,0.03419946,0.031337358,-0.106093846,0.035263777,-0.0068921857,-0.01567669,-0.08283188,0.03644405,-0.08281684,-0.06379669,-0.0719581,-7.5980102E-34,0.020927407,0.062122975,-0.037155926,0.11264322,-0.017417494,-0.07997194,0.16499802,-0.0069986605,0.08666523,0.08872583,-0.008404293,-0.077528454,-0.007939509,-0.049405158,0.0283373,0.0434573,-0.114458665,0.025003979,0.028546505,-0.040414102,-0.038471654,0.05463941,-0.0016965024,0.045589197,0.008696974,0.009934337,0.0432639,0.008970952,0.046018004,-0.017572267,-0.05424357,-0.065494284,0.031018494,0.030478196,-0.019501453,-0.06852317,0.08658458,-0.0041578454,-0.010610365,0.053385697,-0.03184226,0.036257543,-0.07577412,0.103899874,0.018211935,0.006737859,0.10681793,0.017122248,-0.05181959,-0.070600376,0.06527758,0.027990025,-0.07318483,0.00809202,0.045036692,0.010322757,0.05607879,-0.045656398,-0.05403329,-0.007682836,-0.014665899,-0.083645344,0.07078815,0.020733472,0.06665904,0.095516115,0.0340652,-0.050535508,0.02944148,-0.02866916,0.108761564,0.091297664,0.046357635,0.01932798,-0.033644732,-0.0667706,-0.06901729,0.033742018,0.060718823,0.10526518,-0.02290469,-0.037347943,0.091954574,0.04465825,0.02817358,0.032957986,0.022367524,0.019684607,-0.019996408,0.0025786837,-0.024550589,0.0023427678,-0.084648415,0.030367378,-0.02996929,-2.8338349E-8,-0.042178128,-0.03830359,-0.008505953,0.032922506,-0.015528634,-0.009844874,0.0065719034,0.03757293,0.03708959,-0.0341634,-0.0011414965,-0.03995652,-0.017566957,-0.06351963,0.12446946,0.0012514107,0.051917084,0.064989,-0.0069056926,-0.045186087,0.069131024,0.022164686,-0.095446534,-0.03132918,0.061423074,0.019942148,-0.038175464,0.009243455,0.020443542,-0.045228355,-0.006840723,-0.07544202,0.09019588,-0.004939035,-0.0063927243,-0.13144548,0.017812207,0.018458463,0.015612942,-0.034643497,-0.0138121415,0.07520238,-0.09313945,0.021329945,-0.043868314,0.048073355,0.04412017,0.053252265,0.037862137,0.016411228,0.04609889,-0.039342236,-0.0048806584,0.03541358,-0.021198155,-0.011136762,-0.0050975215,-0.0605377,-0.10759327,-0.03418026,0.014742337,0.0057309857,-0.058229446,-0.035620064]},"embedded":{"text":"DataProcessor {\n input: \"sensor_data\"\n transform: map(value -\u003e value * 2)\n output: \"processed_data\"\n}\n```","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"d57333c5-3c9f-4e89-b35d-62a6315916dc","embedding":{"vector":[-0.064206034,-0.02925363,0.03183024,-0.012679343,-0.038069684,-0.056619976,-0.007611033,0.06682047,-0.006068813,-0.062486842,-0.06707647,0.10668073,-0.07032362,-0.057482116,0.040299013,-0.007622326,0.024363846,-0.017898336,-0.0077830916,-0.037151136,0.14432535,0.021241566,-0.079601675,-0.027839545,-0.008507566,0.0022261182,0.003697777,0.041991245,0.074419804,0.014742917,-0.04763929,0.05627659,0.09175887,0.023219796,0.04250865,-0.034986064,0.11583923,0.05513612,-0.02529663,0.004257078,0.06454599,-0.06430701,-0.034243472,0.041741226,-0.01565716,-0.017793547,-0.10570321,0.037298705,-0.0384591,-0.020434465,-4.549252E-4,0.04560257,-0.04487261,0.06492032,0.013546004,0.04756975,0.013538594,0.032611918,-0.019219562,0.0038268142,-0.025915757,0.042073447,-0.100042425,0.011035449,0.013786574,0.057456248,-0.0012956593,0.070221186,0.043781597,-0.007907992,-0.16730116,-0.0043620705,-0.003284353,0.02571217,-0.018136507,-0.0025521,0.01970653,-0.03197174,0.057535835,-0.06790277,-0.00790481,0.011921321,0.03445908,0.11505207,-0.016488682,0.03597768,-0.00638731,0.031125901,0.040335104,-0.003653015,-0.008500034,-0.034781303,-0.039190214,-0.0037642224,-0.024201838,0.046187744,0.012613972,-0.08747491,-0.03546079,0.06303944,0.0022893152,-0.08244986,0.04938226,-9.87781E-4,-0.07545533,-0.046620425,0.0071316767,-0.015278909,0.061312225,-0.03842586,-0.009913555,0.029255003,-0.08659116,-0.045816198,0.0054572765,-0.10238571,-0.072191425,0.038326886,0.114025034,-0.14430988,-0.07843484,0.00943602,-0.028907385,0.028392881,0.06942439,-0.057782087,4.5940967E-4,-1.1443168E-33,0.05824646,0.04568838,-0.062044587,0.087154046,-0.0091205835,0.009132908,0.07367605,0.049077507,-0.06802514,0.10870833,-0.04138536,-0.0015157873,-0.030569503,-0.016334312,-0.035740864,-0.046572346,0.0051745893,0.019904742,0.04103613,-0.0456571,0.06648159,0.031180896,0.044215772,0.026775299,0.06672382,0.09225378,-0.022783257,-0.009203708,0.08182446,0.03887761,-0.00873835,-0.04933395,0.015162131,0.044206273,0.07972204,0.09081587,-0.07637747,0.011267247,-0.046178397,-0.045408227,-0.023291936,-0.015820956,-0.10686482,-0.043692738,-0.011930274,0.03899721,0.02254638,-8.0540014E-4,0.039234918,0.032075524,-0.024311652,0.041980587,-0.024145061,0.02793652,0.07178125,-0.05314131,0.008100742,-0.0030657037,0.03715249,0.12441626,0.0030944191,-0.019188648,-0.04474352,-0.06536597,0.014932553,-0.014110923,-0.049207058,-0.047222536,0.004929301,-0.016022466,-0.02247108,0.08859164,0.011149003,0.07757454,-0.0185348,0.016910259,0.012622731,0.04492868,-0.0056987917,0.009531059,-0.10599913,-0.020226792,0.012730581,0.041620813,0.055372458,0.044275243,0.09853948,-0.019714825,-0.04215707,-0.01202013,-0.052064247,-0.016578842,-0.09159159,0.065446,0.017070742,-2.4716821E-34,-0.034587156,-0.020013005,-0.01861652,0.057354588,-0.116282076,-0.052297805,0.037821427,0.030638734,0.13170199,-0.0069903703,0.008837622,0.02031995,-0.0046920637,0.010431101,-0.022442997,-0.043441527,-0.13743812,-0.046480358,-0.044051345,0.023116974,-0.048568472,0.043476507,-0.004321856,0.030341856,0.014316281,-0.047874052,0.044410888,0.03761252,-0.01995691,-0.0012358152,0.029386958,0.051993255,0.037784074,-0.026718576,-0.045077,-0.005979611,0.084252626,0.070195295,0.0058055073,0.021438483,0.04682161,-0.007882678,0.038562443,-0.017790277,-0.0068164174,0.018605057,0.003868334,-0.03822004,-0.023972362,-0.018397862,0.05931278,-0.07136895,-0.032871775,-0.042341147,0.0047158203,0.030485345,0.0883582,-0.022751786,-0.05905481,-0.030386228,0.009639183,-0.021159224,-0.023535278,0.07735838,0.030610858,-0.06680862,-0.008630208,-0.06853322,-0.029720817,0.016980747,-0.03475265,-0.010719847,-0.040049665,-0.0017969799,0.024121368,-0.14716692,-0.044805933,0.08200875,-0.012708462,0.08792484,-0.038113408,0.059727535,-0.085145086,0.04819998,-0.054052792,0.017007092,0.14163598,0.049511254,-0.036629356,-0.01707806,-0.1288888,0.04909408,-0.10587848,0.16249564,-0.035716925,-1.343618E-8,-0.044025965,0.06977073,-0.022447,-0.007694455,-0.0039672195,0.11158303,0.02681677,-4.4286324E-4,0.027506992,0.05041661,0.0013480139,-0.0020500717,-0.03435209,-0.02193482,-0.0040018805,-0.013752439,-0.015642196,-0.020197943,7.830961E-6,-0.041244585,0.051245194,3.535991E-5,-4.9235916E-4,-0.039414957,0.12396792,-0.030062856,0.01598088,0.106837675,0.0065345946,-0.022932408,0.023278894,0.03561508,0.012912005,-0.018264944,-0.037127875,0.030684145,-0.03069493,0.051610347,0.09315794,0.014797897,-0.058304906,0.07611502,-0.036433827,0.0064563868,0.06472646,0.007563111,-0.050485663,0.033733066,-0.02937312,-0.039722145,-0.032142036,0.016353821,0.011192084,0.04130724,-0.0076525,-0.009533815,0.00823096,-0.06512026,-0.04136279,0.009995669,-0.04779992,0.07155923,-0.045849916,-0.017712248]},"embedded":{"text":"# DSL Documentation Guide","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"3671529b-5cd4-4055-ab39-c91177118676","embedding":{"vector":[-0.03573902,-0.03730629,-0.07217446,-0.00833133,0.002477057,-0.055703644,0.071786836,0.08761174,-0.023163116,-0.028730765,0.0073180795,0.0386027,0.031467497,0.045532107,-0.033056296,-0.038328584,0.008014311,-0.05868527,-0.0073687267,-0.025869086,0.068902776,0.118084,-0.14277816,0.021851588,-0.07932532,0.015614492,-0.020518038,-0.0204187,0.039503206,-0.009316909,0.020790545,0.011101707,0.048010916,0.040911265,0.043218262,0.024811395,0.09712842,0.02598209,-0.066934384,-0.063200146,0.05527971,-0.06814264,-0.054983635,0.0022414192,-0.008811581,-0.03005378,-0.11578854,-0.010260366,-0.032421317,-0.018500715,-0.031401828,-0.050781492,0.017442552,0.050229024,0.039139308,0.014432791,0.0022886547,-0.065853745,-0.07406831,-0.0084919715,-0.0845645,0.020079793,-0.04366436,0.023733985,0.077764615,0.075946584,-0.005188085,-0.0047762464,0.03966691,0.022774948,-0.12246991,0.003979584,0.02440894,0.053843115,-0.034599807,0.050678633,0.005805582,-0.04641329,0.0609817,-0.052823644,-0.029072879,0.02422621,0.030963723,0.08728161,0.0147506,0.090109855,-0.006048053,-0.04535459,0.061468765,0.03573945,0.009239462,-0.07196826,-0.029428648,-0.0046458985,-0.05857019,-0.019164545,0.05428921,-0.03369177,0.015555338,0.019961394,-0.020611048,-0.06922413,0.06950787,-4.7565124E-4,-0.05027642,-0.06631224,-0.0050560688,-0.024480999,0.05267161,-0.062173266,-0.037082274,0.044687845,-0.006737955,-0.0999733,0.030646151,-0.05968737,-0.010917028,0.041650523,0.029598817,-0.0731561,0.007769245,-0.027908659,-0.011877209,0.0038268028,0.15323529,0.0344198,-0.01904183,-7.336817E-34,0.026439674,-3.9414119E-4,-0.018495657,0.036861926,-0.0060406365,0.021191593,-0.029424472,0.035674583,0.0020060858,0.09272897,0.01690181,0.073498175,-0.007604756,-0.06260148,-0.008986711,0.008508424,0.048584174,0.039511204,-0.075002104,-0.01385387,0.015907962,-0.010573757,0.019717973,0.031903055,0.053970315,0.06337228,0.018666923,0.013383389,0.06855561,0.009586759,0.007298456,-0.029267177,-0.015080798,0.099461555,0.010116308,0.0062828683,-0.07276713,0.0049400427,-0.037339814,0.0096199205,-0.013985425,-0.051590797,-0.09652394,-0.004568329,0.041703794,-0.020675026,-0.0741138,0.0084816,0.00889116,-0.036806844,0.01891102,0.05810821,0.08836296,-0.005005101,0.07459556,0.011315542,0.04145265,-0.019857364,0.03410302,0.048746318,0.00541534,-0.06370869,-0.010506961,-0.027449194,0.03132112,-0.034498397,-0.018413754,-0.03249369,-0.016425215,0.032786492,-0.072742105,0.03405884,0.060719352,0.12345465,0.022051439,-0.023932757,-0.0035434405,-0.018805586,-0.078649975,-0.024977714,-0.10579994,0.0040150713,0.022481741,0.08876174,0.08307158,-0.0057661175,-0.028411582,0.03390453,-0.10184011,-0.057539325,-0.0669181,0.024406424,-0.04038217,0.110250525,0.008291015,-1.3004908E-33,-0.021269325,0.004562023,-0.07428113,0.03454938,-0.12197448,-0.08604732,0.01280034,0.03274384,0.016152713,-0.010694705,0.038392097,-0.008289182,-0.05855511,-0.02711902,-0.059477087,0.06057645,-0.18588902,-0.06381972,-0.04423046,0.04009322,-0.08931005,0.06141656,0.030460054,-0.015872817,-0.07748801,3.4273806E-4,0.08128412,0.07461392,-0.017762065,-0.009795874,0.039511137,0.064616024,0.063840024,5.59311E-4,-0.034394253,-0.009900721,0.09259519,-0.024296006,0.0103208,0.06866533,0.03554036,0.04595242,0.028725041,0.0017268405,-0.006811041,0.06694563,-7.6480355E-4,-0.040068276,0.009189199,-0.020435497,0.029393299,-0.08564843,-0.016687158,0.021523068,-0.042620223,0.021417592,0.0111176325,-0.016254876,-0.11052092,0.0081722615,0.010062554,-0.04043305,-0.029362729,0.05663241,0.0042797625,-0.016530667,0.07631184,-0.009428003,0.022497743,-0.022677923,0.016077166,0.0071350653,-0.089025185,0.026753105,0.09101682,-0.098807976,-0.069535635,-0.021606844,0.00613336,0.03402735,-0.008969076,-0.04875641,-0.039760742,0.023500377,-0.0719712,-0.027455566,0.060443033,0.07757859,0.010115707,-0.025217894,-0.058482066,0.04142859,-0.08046277,0.054139506,-0.08628729,-3.258187E-8,-0.05472983,-0.045732833,0.019104715,-0.09360559,0.012373079,0.028368765,-0.02055395,0.046386097,0.023168502,0.06700189,-0.043731175,-0.024467247,-0.043714687,-0.097106256,0.014755217,-0.05041249,-0.035630297,0.0729525,-0.06423772,-0.063273475,0.100915514,-0.007067843,0.037818972,0.0012171515,0.07879906,-0.086578734,0.061973967,0.11278635,-0.021003148,-5.6584366E-4,-0.018250495,0.085843235,0.050002698,-0.0012998545,-0.05856952,0.10999448,0.0011113842,0.022798292,0.10500158,0.03895656,-0.028939607,0.024087235,-0.053332794,0.008669531,-0.029691637,0.017896574,-0.03376018,0.0015757084,0.032847844,-0.093076155,-0.033144582,0.019835489,0.054720953,0.1166421,-0.034145124,-0.02644258,0.061187427,-0.046689965,0.036350533,0.053954132,-0.0054041166,0.02495762,0.07023852,-0.0690968]},"embedded":{"text":"## DiagnosticService\nThe `DiagnosticService` is the core component for managing diagnostics in the system.\nIt allows you to define diagnostic rules and actions.\n\nExample:\n```dsl","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"cc5da5aa-d662-4182-9c20-f7ae0475baf8","embedding":{"vector":[-0.021666087,0.017281983,-0.0076881996,0.008049824,0.08973859,-0.009542086,0.09469945,0.030720009,-0.03157124,-0.007432379,-0.01042299,-0.09834866,0.056850884,0.06113289,-0.047555976,0.021735169,0.021217214,-0.08061479,-0.025908938,-0.06620167,0.06778765,0.06757606,2.7355304E-4,0.054199174,-0.107185334,-0.025348281,-0.035689514,-0.02648655,-0.026852198,-0.025302233,0.056185354,-0.04917193,-0.081669904,-0.005388954,0.07696774,-0.019904068,0.03607483,-0.05554819,-0.02982461,-0.0345878,0.062636144,-0.07734788,-0.06898621,-0.06096203,0.033635877,-0.039336983,0.017020885,-0.01990843,0.024064574,-0.045558024,-0.017880322,-0.11459415,0.060933415,-0.05754415,0.07737561,0.01916359,-0.093531325,0.034444783,-0.06055757,-0.0027186186,0.033114173,-0.059990205,0.013342238,-0.020435859,0.025700923,0.0786637,-0.043936662,-0.038726192,-0.04126793,0.03672588,-0.043425366,0.026543811,0.04537243,-0.006837103,-0.0553675,0.029324396,0.05511222,2.3502753E-5,0.017315842,-0.037712973,-0.1004801,-0.06713722,-0.0028415043,0.04106255,0.10554678,0.019141605,-0.020788103,-0.019643804,-0.014188519,0.02936313,-0.0012164619,-0.054598264,-0.038878396,0.06320162,-0.054074936,0.0022684673,-0.04824106,-0.0505157,0.008503638,0.035323925,-0.02431163,-0.041391592,0.0031552017,0.05550403,0.04020978,0.022158492,-0.054562185,0.096729316,0.018208286,-0.016218979,-0.0016867842,-0.013288076,0.065279156,-0.018887242,-0.034322433,0.0063674,0.008174649,0.059990175,0.0010687188,0.015160966,0.061118435,-0.015421059,0.013144479,-0.008024716,0.17927472,0.021706717,0.041517537,4.6021687E-34,0.015823362,0.002123753,-0.050197396,0.05739579,0.035366457,-0.032885745,-0.020065317,0.005454151,-0.027902437,0.009120604,0.076422244,0.01321367,-0.0020469134,-0.12588713,-0.0044017155,0.01782604,0.06469633,0.007876018,-0.0611547,-0.034198705,-0.025579436,-0.082652315,0.0114736175,0.007737263,-0.021118285,0.013452294,0.025181515,-0.0077725747,0.056013,0.019012297,0.04017099,-0.0027104898,0.06587038,0.084327556,-0.023195582,-0.012837669,-0.03245751,-0.009898806,-0.0045796875,0.0043132915,-0.017636256,-0.027491337,-0.10491007,-0.040370192,0.020606564,-0.002225179,-0.01364342,0.043336168,0.10868613,-0.040979814,0.019239673,-0.01608655,0.07877441,-0.006360906,0.07814696,0.090988554,-0.017407859,0.1026277,0.032146454,-0.05740465,-1.8214577E-4,-0.035031687,0.0109549,-0.08097437,0.053928506,0.005108128,-0.02224638,0.021167345,-0.04467978,-0.035589397,-0.021646988,-0.004635608,0.06299743,0.09970892,0.05880798,-0.08802837,0.01813699,-0.029292934,-0.023101453,-0.10105813,-0.038987853,-0.07346367,-0.048076354,0.06736632,0.018658847,0.044377178,-0.017082797,0.11697014,-0.1375184,0.046127386,-0.029671602,0.002799802,0.032264985,0.021581143,-0.036602065,-1.5448811E-33,0.028245842,0.012870201,-0.08722494,0.032621253,-0.016574012,-0.028602576,0.03225194,0.04057173,-0.020796772,0.04484157,0.046861984,-0.016349154,-0.055628084,0.009284278,-0.18233968,0.015134023,-0.07517589,-0.039366044,-0.014670537,0.0307342,-0.007991306,0.04895957,0.02100402,0.011123258,-0.1267556,0.031949796,0.015058342,0.031484794,-0.10347756,-0.04644782,0.047000322,0.037595365,-0.012628944,0.02010003,0.042718012,-0.045641493,0.06972119,-0.07367136,-0.054190442,0.10726655,0.014912998,0.037096918,0.0048018764,-0.037660614,-0.0066799186,0.044572674,0.08716498,-0.056078907,-0.03192815,-0.005204627,0.03584808,-0.04570712,0.05600023,0.10336615,-0.08899102,0.06561592,0.024731224,-0.013058215,-0.10657328,0.079636365,-0.0020095387,-0.07069263,-0.021473333,0.036797725,-0.033617023,-0.037832882,0.034179274,0.083661854,0.18383163,-0.024972912,-0.008630703,-0.007525585,-0.055969194,0.02404175,0.03240836,-0.034647215,-8.294651E-4,-0.09044499,0.013878576,-0.028462682,-6.942939E-5,-0.056569066,0.036535498,-0.03884079,0.0021440668,-0.013886517,0.04093314,0.048222132,0.0081700785,-0.013536428,-0.021438055,0.04727936,0.013731252,-0.07358832,-0.047991395,-3.3208625E-8,-0.022982856,0.030659802,0.015783422,-0.10684087,0.052084442,-0.03631313,0.045648366,-0.03115935,-0.031696875,-0.027727224,-0.06704139,1.2679507E-4,-0.016634261,-0.015728347,0.052210335,-0.06678271,-0.06934747,0.07218671,-0.050223988,8.210244E-4,0.05628787,-0.0391796,0.0028053338,0.014839483,0.066668466,-0.04278156,0.009138808,-0.01721217,-0.008829478,0.017218772,-0.06752211,0.04356754,0.09932534,-0.0037323255,-0.018741604,0.08581001,0.05507213,-0.009419805,0.035324175,0.056929797,0.038885254,0.038000397,-0.041720778,-0.03712279,0.0024136615,0.07411889,0.0077734175,-0.05360311,-0.013092348,0.008711659,0.01264113,-0.021673711,0.036625877,0.07659555,-0.09461146,-0.07136143,0.072814964,-0.018162847,-0.052812655,-0.022728765,0.09507794,0.01952296,0.09876118,-0.04720121]},"embedded":{"text":"DiagnosticService {\n rule \"CheckEngineLight\" {\n condition: engine.status \u003d\u003d ERROR\n action: notify(\"Engine error detected\")\n }\n}\n```","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"c22a1cb9-86d4-440e-bc81-b73b70d6d493","embedding":{"vector":[-0.024573512,-0.09481421,0.012704845,-0.014725921,0.0011042925,-0.06925957,0.10548743,-0.058607195,0.08540852,-0.03479934,-0.06460883,0.01974976,0.023838852,0.06303214,0.080347985,-0.02985834,0.060657967,-0.06515679,-0.07103316,-0.07144637,0.12286368,0.04864099,-0.075108476,0.07120489,-0.015362454,-0.085106306,0.010265732,0.045886077,0.03871755,-0.011306089,0.037861653,0.04619728,0.04935637,-0.0045958157,0.007583329,-0.027269974,0.03760097,0.0477116,-0.024769781,0.02343254,0.07760258,-0.063313514,-0.023953546,0.04401568,-0.026735503,-0.03184933,-0.07836842,0.02877967,-0.06592112,-0.023814144,0.03257333,-0.09888764,0.0142953945,0.11080654,0.02317767,-0.01256503,-0.065910675,0.06682748,0.018183723,0.029311912,-0.033491574,0.019277824,-0.019630227,0.0056599663,-0.03438023,0.04782048,-0.057729032,0.054165002,-0.026745627,-0.048378173,-0.03246296,0.010402118,0.043216508,0.015450177,0.081661925,0.023023803,0.04034183,-0.049391065,-0.012384904,-0.058032386,-0.041718908,-0.0036325806,-0.01819232,0.030672753,0.028849484,0.035678096,-0.042298004,-0.034566116,0.017295135,0.04393038,-0.07897883,-0.03257725,-0.029901404,0.028107418,-0.16311546,0.02141064,-0.026046898,-0.06940064,-0.05273765,0.015635256,0.020233076,-0.03488505,0.048261356,0.06467978,0.00847581,-0.093176894,-0.08944384,0.026309865,0.070184134,-0.03180161,-0.059333656,-0.01730928,1.42836E-4,0.01408375,-0.037990652,0.007859907,0.0026667174,0.07409888,0.09963614,-0.08404582,-0.031121489,-0.07143949,-0.05331883,0.03216028,0.034987517,0.04738987,0.024515979,3.0433165E-33,0.015513614,-0.001230507,-0.05082863,0.049043957,0.0055149193,-0.016583852,-0.005784518,0.016675955,-0.016566383,0.050998252,-0.053885315,0.04332173,0.0046661617,-0.018906606,-0.040667053,-0.06528358,0.02012028,0.016715452,-0.008974128,-0.04646641,-0.011444995,0.08526889,-0.039934654,-0.0118591655,0.060606156,0.041142657,0.059441444,-0.036683872,0.0581646,0.037645258,0.042702317,-0.0021024535,0.034385607,0.06720473,-0.014412731,-0.005582015,-0.057170186,0.011253906,-0.027015978,-0.04006538,0.040693384,-0.032044798,-0.1690718,-0.038928095,-0.019147987,0.0053766607,-0.0070654154,-0.020016318,0.0811622,0.024476562,0.064768635,0.031865496,0.01161317,0.037660062,0.106357396,-0.015467219,-0.027072301,0.026638366,0.062037446,0.024093827,-0.04114291,-0.08420612,0.028247256,-0.11039364,0.123158604,0.035087388,0.027038379,0.0057547605,-0.078343764,0.04021106,-0.073245205,0.1087297,0.04162878,0.076892994,-0.047231693,-0.004041229,-0.027838688,0.009490377,-0.02927319,0.025378436,-0.049986184,0.0040497594,0.014353689,0.06368347,0.08502903,0.06721049,0.03854983,-0.019162327,-0.09868536,0.019932758,-0.051945742,0.06096762,0.0033984438,0.11418111,-0.04927798,-3.5292837E-33,-0.10752849,0.024659583,-0.097132094,0.018232934,-0.10511411,-0.11922136,-0.008732155,0.033270355,0.0361424,0.029825848,0.033422437,-0.03170142,-0.043209065,0.06366602,-0.07863493,-0.038156014,-0.037705533,-0.016918082,-0.10044297,0.015260279,-0.08896711,0.04249793,4.29088E-4,0.022513928,-0.032720406,0.007857559,0.07106782,0.09260633,6.6062756E-4,-0.060480334,0.033165142,0.03361513,0.055547085,-0.0013756693,0.015557216,-0.014136478,0.08277692,0.062395032,-0.03069164,0.011716692,0.03403921,-0.009055049,0.025973324,0.007165512,-0.05119905,0.07996487,0.023148961,-0.03890309,-0.09877842,0.036169253,0.04695391,-0.06467082,0.0059169997,0.061904363,-0.024680905,0.061559178,0.07639827,0.044304073,-0.041695777,-0.110445976,0.031867474,-0.09579801,0.015747983,0.0052719763,0.060389906,-0.027617114,0.05147287,-0.039842773,0.025554936,0.019889321,0.07969794,-0.0036116866,-0.1174797,-0.020063907,0.0075487727,-0.06058503,-0.038063236,-0.024000868,-0.051689386,0.014708861,-0.060886953,0.03075176,0.0031466584,-0.07276338,-0.04288444,0.01731504,0.10073036,0.08671813,0.042903494,-0.013376672,-0.03587274,0.109149545,-0.0064802356,0.041315667,-0.0082101645,-2.992958E-8,-0.020136427,-0.026042216,-0.09107276,-0.025155777,-0.009440125,0.06178133,-0.005677576,-0.00548358,0.0010005927,-0.029247863,-0.048568085,-0.020409519,-0.007895846,-0.024205131,0.052605193,-0.065549836,-0.008380604,-0.04265896,0.030735493,-0.06056508,0.059988685,0.00728582,0.013740425,-0.019503584,0.034840677,-0.034741357,0.010035178,0.09434798,-0.034237504,-0.040195905,-0.010703901,-0.024912355,-0.009639469,-0.040468626,-0.064457044,0.118838094,-0.037715167,-0.029415531,0.05024517,0.047966883,0.025064172,-0.06855979,-0.074379265,0.030289851,-0.008091452,0.037091732,0.026863975,0.011740989,0.07444346,-0.03554636,-0.020887109,0.010371051,0.02665836,0.007560016,-0.0061989883,-0.06263604,0.036448214,-0.09114578,4.1767178E-4,0.056078557,-0.0012247856,0.03605536,-0.0021139218,-0.03989882]},"embedded":{"text":"## NotificationService\nThe `NotificationService` handles sending notifications to various channels.\n\nExample:\n```dsl","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"0e7b57c0-71a0-4e15-aac1-62fde4d53d60","embedding":{"vector":[-0.0023021356,-0.04671147,0.01628659,-0.03944157,0.031467054,-0.07540068,0.11659026,-0.023572184,0.0354389,0.0060728695,-0.05672664,-0.030808002,0.04920551,0.15228634,0.09753241,0.05760399,0.00943114,-0.056427393,-0.007945234,-0.057486113,0.11094238,0.024806784,-0.009871366,0.04795981,-0.016855163,-0.12001075,-0.018671291,0.056384064,-0.039014682,-0.0029022638,0.13500273,-0.059761368,0.034887645,-0.059052654,0.046853088,0.044537667,0.062422346,0.057427663,0.02351873,0.01043483,0.0339729,0.017338382,0.05496697,-0.0416675,0.040970195,-0.003339682,0.05731255,-0.048916403,-0.056670375,-0.01751115,0.040079348,-0.14855231,0.01277776,0.038948696,0.0048435554,0.055975225,-0.09706989,0.06831009,0.020708282,0.021209575,-0.0024270832,-0.06141315,0.018680675,-0.021724809,-0.015774736,-0.07602748,-0.02084827,0.017932463,-0.052201692,-0.03763458,-0.014113999,0.008286684,0.009913863,0.012652838,0.09146167,0.050013848,0.028350495,0.04141788,-0.037902076,0.04046456,-0.05764238,-0.032497875,-0.014025226,-0.0013783404,0.04387525,0.07655783,-0.06808168,-0.078930385,-0.016999906,0.09511429,0.022036493,-0.025628373,-0.059822157,-0.015209573,-0.061881367,0.04184001,-0.053787734,-0.05353578,-0.10968231,0.040138144,0.029789358,0.009721571,0.044017233,0.073660985,0.07307763,-0.08871395,-0.05926118,0.09481296,0.0036583226,-0.04276121,-0.012802482,-0.0017091272,-0.03454238,4.8666444E-4,-0.04598296,-0.017469391,-0.029037965,0.031145608,0.04796957,0.022077447,-0.025181692,-0.107872374,-0.09906684,0.020002399,-0.0012940546,0.04569238,0.077283114,-1.0664179E-33,0.01930178,0.07316165,0.014860824,0.020035958,0.023583692,-0.035068307,-0.067769505,-5.6116376E-4,0.030330831,-0.0070871706,-0.0030866836,0.057241477,0.08957152,-0.039910007,-0.083583914,-0.0048945057,-0.008959108,0.042813804,-0.015993532,-0.10164773,-0.06648296,0.07311734,-0.06747293,0.008099519,0.07069463,8.911015E-4,0.12310201,0.0039870287,0.060044277,0.021823473,0.022044448,-0.03239935,0.02698652,0.06373961,0.052489206,-0.0073553957,0.0111751435,0.015898045,-0.011994117,-0.06135686,0.0667719,-0.006134451,-0.034107674,0.024078809,0.006485113,-0.01971591,0.12118358,-0.012461865,0.16657507,-0.04814604,0.06553724,-0.051724534,-0.017576454,0.01946105,0.0726536,0.021834034,0.015945947,0.03383748,0.023650382,-0.05838925,-0.08518342,0.0013199999,0.093727104,-0.056075893,0.0707961,-0.03108407,-5.8304856E-4,-0.037041355,0.025855348,-0.0063381717,-0.058124617,-0.03757523,-0.021464558,0.07148911,-0.09388204,-0.06650409,-0.056262977,0.008489544,-0.028410787,-0.03228534,-0.025446022,-0.008409191,-0.036125846,0.13302965,0.05189208,0.032706987,0.018161312,0.06114939,-0.015343628,0.0029151414,-0.053226937,0.046178628,0.036007445,0.13001432,-0.052828386,9.091078E-34,-0.0038035684,-0.02086344,-0.077436715,-0.031090254,-0.009899641,-0.0263559,0.058477424,0.022115067,-0.0091020325,-0.012062682,-0.019374488,-0.009341128,-0.040192872,0.093449645,-0.1234863,0.0122479275,-0.037234645,-0.006762101,-0.056438606,-0.053266402,-0.10800264,0.06353949,0.058747336,-0.015249321,-0.10027572,0.022810366,0.065146,0.030607654,-0.029096901,-0.047043856,-0.03598514,0.009106185,-0.01948798,0.08754856,-0.042579666,-0.05614636,0.042363852,0.017088838,0.038023412,-0.026736604,0.076595515,0.061361644,0.016513765,-0.005300199,-6.7116175E-4,0.07631542,0.06973198,-0.04398606,-0.07646941,0.09735557,-0.031938728,-0.0021785186,0.051342454,-2.9092547E-5,-0.026748192,0.015122419,0.032463714,0.030084515,0.044909373,-0.059862215,-0.018903878,-0.061856568,0.07200548,0.03113723,0.04022801,-0.0036926216,0.0119068865,0.050498515,-0.003547432,-0.037141085,0.06430139,-0.040591426,-0.09904699,-0.031442914,-0.0035812901,-0.017529486,0.028013812,-0.031208899,-0.02932141,0.0032557377,-0.05288413,0.0016435232,-0.046295986,-0.07144848,-0.045918982,0.014504615,0.042547524,0.011404054,0.034705617,5.6684157E-4,0.0405058,0.057222907,0.032164574,-0.05374426,-8.2413515E-4,-2.606503E-8,-0.023149611,-0.016935863,-0.014144238,-0.023916889,0.0077191503,-0.019598704,0.033959296,-0.02305188,0.010882757,-0.014343608,-0.035316,-0.008500912,-0.041086197,-0.0060958047,0.011838392,-0.055195417,-0.05618301,0.0053603207,0.011194268,0.011028083,0.060921263,-0.007515671,-0.0077978796,-0.062633544,0.017189784,-0.0106992,-0.028501436,0.0054648817,-0.040114224,0.026647061,-0.040421322,-0.045437705,-0.005903599,-0.041910134,-0.06555111,0.06924273,-0.028045801,-0.13264638,0.02082176,0.008550732,0.063101396,-0.090552405,0.028030721,-0.027760863,-0.030596858,0.09831504,0.11017679,0.00510431,0.10986618,-0.016801706,-0.018130932,0.009301503,0.0038671137,-0.026786916,-0.09686371,-0.02181429,0.01685649,-0.08311574,-0.037461724,-0.028796276,0.020863837,0.008410611,0.006853361,-0.03507604]},"embedded":{"text":"NotificationService {\n channel \"Email\" {\n address: \"admin@example.com\"\n }\n}\n```","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"3a67bda7-0311-4001-8f8d-e5e980b7c1ef","embedding":{"vector":[-0.094665386,-0.0014108176,-0.031650174,-0.02004688,-0.059109375,-0.12020615,0.02246819,0.037874226,0.058642093,-0.015857033,0.007164266,0.047136385,-0.04040846,-0.044814274,0.0030250708,-0.0048004654,-0.025462398,-0.034850545,-0.028946858,-0.10186013,0.10879659,0.0118237,-0.13938548,-0.027885921,0.03466672,0.033052202,-0.016573206,0.04048582,0.07811129,-0.0328285,-0.025996367,0.030028135,0.02981966,0.063303776,-0.029733945,0.014961167,0.06658026,-0.050623454,-0.062372793,-0.028918827,0.09102471,-0.044108894,-0.037535235,0.015847895,-0.0501381,-5.6697987E-4,-0.06987213,-0.013628648,-0.07778802,0.011820604,-0.07853879,0.035670802,-0.040202923,0.12394146,0.018544653,0.02238737,0.027437532,-0.0059749284,-0.007537937,0.030806284,-0.0677717,0.0242013,-0.014347732,-0.024380013,-0.009156317,-0.008119092,-0.019102614,-0.0049953954,0.055669706,-0.053297553,-0.11410941,-0.022132713,-0.02808203,0.028158722,-0.016665105,-0.026275435,-0.0025255259,-0.06926298,0.10082079,-0.04309556,0.03867276,0.0019861083,-0.042947978,0.089385934,0.008984125,0.06221655,-0.072404966,-0.021409988,0.06037155,0.014201313,-0.059364766,-0.02917551,-0.009772561,-0.0019815555,-0.040387753,0.013355753,0.03951124,0.0060528,0.001983632,-0.008765769,9.741822E-5,0.028908122,0.090933055,2.5176076E-4,-0.070123956,-0.09671673,0.020628398,0.032465372,0.023004713,-0.091619104,-0.020240946,0.033731673,-0.03675363,-0.083555356,-0.0145042585,-0.05880773,-0.09627207,0.0034555867,-0.0096122585,-0.04702437,-0.01850687,-0.013517694,-0.10206254,0.055724975,0.04764465,-0.02119559,-0.039734777,2.271657E-33,0.012503721,-0.017966881,0.0378235,-0.0075300382,-0.02668289,0.010905504,0.028663946,-0.00484354,-0.055202566,0.09408898,-0.0538842,0.007174701,-0.016140714,0.028945146,-0.016111638,-0.07980575,0.0587054,0.028779456,0.03676653,-0.04066128,0.11982569,0.12538798,0.012400816,0.034638815,0.041997384,0.07909558,-0.027709022,-0.052519076,0.07421098,0.056212127,-0.03699029,-0.007662191,-0.05915951,0.021358449,0.064078175,-0.031724345,-0.04752365,-0.019031987,0.030297397,0.030870738,0.022234276,-5.526427E-4,-0.044444434,-0.022613779,-0.060659405,-0.00831053,0.048792496,0.061658587,0.038557343,-0.013402483,0.041048594,0.059218768,0.06675505,0.040899012,0.13140504,0.009921638,0.042053442,0.011917976,0.027976861,0.14105481,-0.09251445,0.0075834375,-0.013807102,0.015755216,0.054860163,-0.050580595,0.042081404,-0.069646336,-4.5062552E-4,0.07926582,-0.059797812,0.07506802,0.0433093,0.13513719,0.0074235285,0.033784207,-0.063999966,-0.01995462,-0.048731845,-0.0038393121,-0.10177249,0.043900266,0.015056547,0.021667127,0.02915927,0.023567403,-0.0012932018,-0.041163936,-0.013681427,-0.08834225,-0.023655022,-0.011334377,-0.026051112,0.028283224,-0.05763165,-3.0114997E-33,-0.01491315,-0.025153076,-0.05813822,0.06533522,-0.08977196,-0.07424883,0.0684668,-0.04768435,0.09168636,0.017526176,0.0070554097,-0.008695042,-0.0066490816,-0.04563185,0.06882712,-0.021480031,-0.09909332,-0.05294031,-0.102871105,0.023978174,-0.08230752,0.04590906,0.03462146,-0.009118533,0.028318627,-0.021384552,0.037318226,0.05254042,0.065183215,0.008231211,-0.029961748,0.037672605,0.03902795,-0.027154531,-0.018931253,0.0072346865,0.10131344,0.033177964,0.037377615,0.016521005,0.004804258,0.018538006,0.08370416,0.048032977,0.0050992104,0.09277918,-0.042207707,-7.739319E-4,-0.022403795,-0.03717866,0.039778177,-0.014675715,-0.05765432,-0.0021530674,0.04324005,0.02341578,0.0286891,0.017965661,-0.076947704,-0.043206118,0.017569738,-0.0997154,0.07498653,-0.02782989,-0.0052557583,0.04694677,0.027398173,-0.08661091,-0.0412503,-0.06547184,0.15150347,0.017103007,-0.03180267,-4.6315166E-4,-0.024427487,-0.10630812,-0.040108357,0.038226977,0.019469272,0.13314432,-0.02218899,0.014932842,0.00806008,0.0012402562,-0.05431397,0.031644862,0.043934032,0.04984588,-0.029001854,-0.06027116,-0.0963219,0.007045677,-0.101599164,0.12087315,-0.0143176215,-2.8379965E-8,-0.05776663,-0.05521305,-0.010378402,-0.031069884,0.00806506,0.031975057,-0.056457154,0.03964633,0.04615118,0.0031797392,0.0011120128,-0.052684747,0.05170692,-0.10734655,0.06707011,-0.02793436,0.07789176,0.0022493943,-0.015891297,-0.080402054,0.030101672,0.025615511,-0.061649773,-0.016771568,0.041870523,-0.027749337,0.025926812,0.082248054,-0.019286225,-0.031142933,0.05725358,0.041634656,0.057824086,0.016420374,0.025885565,0.051991645,0.039111044,0.06825219,0.03631801,-0.0031019892,-0.018275699,0.018864702,-0.09616043,0.05830116,-0.03967564,0.058586214,-0.006346714,0.04757324,-0.0022188216,-0.045890074,0.019158555,0.023387097,-0.033302624,0.042956993,0.0014141689,0.004783003,-0.010152199,-0.09211936,-0.022429496,0.04102073,0.011907576,0.05345474,0.022369627,-0.06135136]},"embedded":{"text":"## DataProcessor\nThe `DataProcessor` is used for processing incoming data streams.\nIt supports various transformation functions.\n\nExample:\n```dsl","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}},{"id":"2de61cbc-ae55-4b7d-8adf-a081e130cdf8","embedding":{"vector":[0.020345105,0.07156443,0.007547938,-0.00814727,-0.024860151,-0.056752324,0.060865164,0.024741424,-0.058242325,0.0362577,0.04271402,-0.067033015,-0.0030398068,-0.035206724,0.0019538722,0.04739105,-0.043989938,-0.0033540453,-0.043936193,-0.12440453,0.058861617,0.01533673,-0.04573208,-0.017493967,-0.01705943,0.082354955,-0.043832436,-0.01571432,0.03874003,-0.009694031,0.008844796,-0.012128469,0.002409752,0.053819317,0.044207405,0.013620317,0.0445376,-0.12088967,-0.036457345,-0.01458495,0.14203677,-0.01027526,-0.040479697,-0.050315723,-0.017275235,-0.019115133,0.015542433,-0.060077388,-0.0019414084,0.11197273,-0.040862594,0.04343526,0.0049165436,0.07120122,4.2281835E-4,0.01834391,-0.011155912,-0.03066873,0.008098425,-0.10247849,0.005738313,-0.05774471,0.041711044,-0.030445725,-0.0058378587,-0.02503265,-0.083712876,-0.039431594,0.0081546325,-0.061792623,0.01684625,-0.018256733,0.061521325,-0.09067654,0.02711527,-0.08612343,-0.023121927,-0.09521615,0.044716835,-0.020367095,-0.007544159,-0.07850602,-0.06436786,0.063860625,-0.001152117,0.0050844965,-0.09249585,0.0021493908,-0.005877137,-0.024391197,-0.068591565,-0.06022801,-0.030403852,0.052690674,0.0065024546,0.031619955,-0.01368184,0.011365685,0.036082264,-0.029484011,-0.06407203,-0.005132191,-0.010802134,0.035459176,-0.042140726,-0.07270297,-0.03625181,-0.0072628143,-0.09256764,0.0023484973,0.0143564325,0.035647992,0.0011045593,0.048890144,0.0036218716,4.7481305E-4,-0.060781803,0.033086985,-0.016104886,0.07017161,0.04703379,-0.005858184,-0.15850665,-0.01342736,0.0131587675,-0.0778802,0.043424763,-2.1277296E-33,-0.02555585,-0.04878318,0.029464772,-0.05520904,0.03475463,0.013074525,-0.065786585,-0.048283257,-0.025777878,0.055495765,-0.027619133,0.0090088975,-0.011549301,0.01972175,-0.05936591,-0.0394272,0.029625895,0.027403902,0.014158364,-0.022381376,0.10246401,0.07797989,-0.09066509,0.043230414,0.036066312,0.054196674,-0.10502157,0.048841793,0.010934685,0.014212846,0.006681959,0.028492356,0.03042811,-0.0016383498,0.04510311,-0.060297195,0.06082347,0.07314136,-0.030786628,0.024717469,0.084736966,0.010903503,0.032069687,-0.006293647,-0.040119782,-0.060023848,0.042823967,0.008244766,0.064446494,-0.020039232,0.04225302,-0.003957637,0.018074842,0.0013088072,0.029451147,-0.045833472,0.03079922,0.0035474407,0.025093772,0.03834834,-0.13602702,0.08193211,0.05747606,-0.051958118,0.030033935,-0.035625126,0.09443217,0.025452605,0.014881758,0.02814761,-0.085077025,0.009188458,-0.026232813,0.080182984,0.022884186,0.02414216,-0.019577986,-0.0472808,-0.10186915,-0.021324769,-0.094587,0.02224902,-0.02416831,0.036381613,0.03419946,0.031337358,-0.106093846,0.035263777,-0.0068921857,-0.01567669,-0.08283188,0.03644405,-0.08281684,-0.06379669,-0.0719581,-7.5980102E-34,0.020927407,0.062122975,-0.037155926,0.11264322,-0.017417494,-0.07997194,0.16499802,-0.0069986605,0.08666523,0.08872583,-0.008404293,-0.077528454,-0.007939509,-0.049405158,0.0283373,0.0434573,-0.114458665,0.025003979,0.028546505,-0.040414102,-0.038471654,0.05463941,-0.0016965024,0.045589197,0.008696974,0.009934337,0.0432639,0.008970952,0.046018004,-0.017572267,-0.05424357,-0.065494284,0.031018494,0.030478196,-0.019501453,-0.06852317,0.08658458,-0.0041578454,-0.010610365,0.053385697,-0.03184226,0.036257543,-0.07577412,0.103899874,0.018211935,0.006737859,0.10681793,0.017122248,-0.05181959,-0.070600376,0.06527758,0.027990025,-0.07318483,0.00809202,0.045036692,0.010322757,0.05607879,-0.045656398,-0.05403329,-0.007682836,-0.014665899,-0.083645344,0.07078815,0.020733472,0.06665904,0.095516115,0.0340652,-0.050535508,0.02944148,-0.02866916,0.108761564,0.091297664,0.046357635,0.01932798,-0.033644732,-0.0667706,-0.06901729,0.033742018,0.060718823,0.10526518,-0.02290469,-0.037347943,0.091954574,0.04465825,0.02817358,0.032957986,0.022367524,0.019684607,-0.019996408,0.0025786837,-0.024550589,0.0023427678,-0.084648415,0.030367378,-0.02996929,-2.8338349E-8,-0.042178128,-0.03830359,-0.008505953,0.032922506,-0.015528634,-0.009844874,0.0065719034,0.03757293,0.03708959,-0.0341634,-0.0011414965,-0.03995652,-0.017566957,-0.06351963,0.12446946,0.0012514107,0.051917084,0.064989,-0.0069056926,-0.045186087,0.069131024,0.022164686,-0.095446534,-0.03132918,0.061423074,0.019942148,-0.038175464,0.009243455,0.020443542,-0.045228355,-0.006840723,-0.07544202,0.09019588,-0.004939035,-0.0063927243,-0.13144548,0.017812207,0.018458463,0.015612942,-0.034643497,-0.0138121415,0.07520238,-0.09313945,0.021329945,-0.043868314,0.048073355,0.04412017,0.053252265,0.037862137,0.016411228,0.04609889,-0.039342236,-0.0048806584,0.03541358,-0.021198155,-0.011136762,-0.0050975215,-0.0605377,-0.10759327,-0.03418026,0.014742337,0.0057309857,-0.058229446,-0.035620064]},"embedded":{"text":"DataProcessor {\n input: \"sensor_data\"\n transform: map(value -\u003e value * 2)\n output: \"processed_data\"\n}\n```","metadata":{"metadata":{"file_path":"/home/shahondin1624/Projects/rag/docs/dsl-guide.md"}}}}]} \ No newline at end of file diff --git a/src/test/java/de/shahondin1624/rag/LocalRagServiceIncrementalTest.java b/src/test/java/de/shahondin1624/rag/LocalRagServiceIncrementalTest.java new file mode 100644 index 0000000..79859c2 --- /dev/null +++ b/src/test/java/de/shahondin1624/rag/LocalRagServiceIncrementalTest.java @@ -0,0 +1,54 @@ +package de.shahondin1624.rag; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.concurrent.TimeUnit; + +import static org.junit.jupiter.api.Assertions.*; + +public class LocalRagServiceIncrementalTest { + + @TempDir + Path tempDir; + + @Test + public void testIncrementalIndexingAndWatching() throws IOException, InterruptedException { + LocalRagService service = LocalRagService.getInstance(); + + // Use a temporary directory for testing + Path docFile = tempDir.resolve("test-doc.md"); + Files.writeString(docFile, "## Test Service\nThis is a test service description."); + + service.indexDirectory(tempDir); + + // Verify initial index + String result = service.search("test service"); + assertTrue(result.contains("Test Service")); + + // Modify file + Files.writeString(docFile, "## Test Service\nUpdated description for the test service."); + + // Wait for watcher to pick up changes (might be slow on some systems, but should work within 2-5 seconds) + // Since we are using a background thread, we might need a bit of time. + // For testing purposes, we can also manually call indexFile if watcher is too slow in this environment. + + // Let's give it some time + TimeUnit.SECONDS.sleep(2); + + result = service.search("Updated description"); + assertTrue(result.contains("Updated description"), "Index should be updated with new content"); + + // Delete file + Files.delete(docFile); + TimeUnit.SECONDS.sleep(2); + + result = service.search("test service"); + // It might still find something if it was similar, but it shouldn't find the exact deleted text if it was the only source. + // Actually, search returns top 5. If we deleted the only file, it should ideally be empty or not contain the text. + assertFalse(result.contains("Updated description"), "Index should no longer contain deleted content"); + } +} diff --git a/src/test/java/de/shahondin1624/rag/LocalRagServiceTest.java b/src/test/java/de/shahondin1624/rag/LocalRagServiceTest.java new file mode 100644 index 0000000..5821c1b --- /dev/null +++ b/src/test/java/de/shahondin1624/rag/LocalRagServiceTest.java @@ -0,0 +1,49 @@ +package de.shahondin1624.rag; + +import dev.langchain4j.data.segment.TextSegment; +import org.junit.jupiter.api.Test; +import java.nio.file.Paths; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +public class LocalRagServiceTest { + + @Test + public void testRagService() { + LocalRagService service = LocalRagService.getInstance(); + assertNotNull(service); + + service.indexDirectory(Paths.get("/home/shahondin1624/Projects/rag/docs")); + + String result = service.search("What is DiagnosticService?"); + assertNotNull(result); + assertTrue(result.contains("DiagnosticService"), "Result should contain 'DiagnosticService'"); + assertTrue(result.contains("core component"), "Result should contain 'core component'"); + } + + @Test + public void testSplitterWithMetadata() { + RagDocumentSplitter splitter = new RagDocumentSplitter(); + Map metadata = Map.of("author", "tester", "version", "1.0"); + List segments = splitter.split("Some content", metadata); + + assertFalse(segments.isEmpty()); + TextSegment segment = segments.get(0); + assertEquals("Some content", segment.text()); + assertEquals("tester", segment.metadata().get("author")); + assertEquals("1.0", segment.metadata().get("version")); + } + + @Test + public void testIndexerWithMetadata() { + LocalRagService service = LocalRagService.getInstance(); + Map metadata = Map.of("test_key", "test_value"); + service.indexDocuments(List.of("Content for indexer test"), metadata); + + // Verification via search + String result = service.search("Content for indexer test"); + assertTrue(result.contains("Content for indexer test")); + } +} diff --git a/src/test/java/de/shahondin1624/rag/tooling/RagToolingTest.java b/src/test/java/de/shahondin1624/rag/tooling/RagToolingTest.java new file mode 100644 index 0000000..01dde35 --- /dev/null +++ b/src/test/java/de/shahondin1624/rag/tooling/RagToolingTest.java @@ -0,0 +1,85 @@ +package de.shahondin1624.rag.tooling; + +import io.modelcontextprotocol.spec.McpSchema; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +public class RagToolingTest { + + @BeforeAll + public static void setup() { + // Ensure RAG service is initialized + } + + @Test + public void testRagSearchTool() { + RagSearchTool tool = new RagSearchTool(); + assertEquals("search_dsl_documentation", tool.name()); + + McpSchema.CallToolRequest request = new McpSchema.CallToolRequest("search_dsl_documentation", Map.of("query", "DiagnosticService")); + McpSchema.CallToolResult result = tool.call(request, request.arguments()); + + assertNotNull(result); + assertFalse(result.isError()); + assertFalse(result.content().isEmpty()); + + // Check structured content + assertNotNull(result.structuredContent()); + assertTrue(result.structuredContent().containsKey("result")); + } + + @Test + public void testRagEmbedTool() { + RagEmbedTool tool = new RagEmbedTool(); + assertEquals("embed_information", tool.name()); + + String secretInfo = "The secret password for the DSL is 'Blueberry'."; + McpSchema.CallToolRequest request = new McpSchema.CallToolRequest("embed_information", Map.of("content", secretInfo)); + McpSchema.CallToolResult result = tool.call(request, request.arguments()); + + assertNotNull(result); + assertFalse(result.isError()); + assertNotNull(result.structuredContent()); + assertTrue(result.structuredContent().containsKey("result")); + + // Now search for it to verify it was embedded + RagSearchTool searchTool = new RagSearchTool(); + McpSchema.CallToolRequest searchRequest = new McpSchema.CallToolRequest("search_dsl_documentation", Map.of("query", "secret password for the DSL")); + McpSchema.CallToolResult searchResult = searchTool.call(searchRequest, searchRequest.arguments()); + + assertNotNull(searchResult); + assertFalse(searchResult.isError()); + String content = ((McpSchema.TextContent) searchResult.content().get(0)).text(); + assertTrue(content.contains("Blueberry"), "Search result should contain the embedded information. Got: " + content); + } + + @Test + public void testRagEmbedToolWithMetadata() { + RagEmbedTool tool = new RagEmbedTool(); + + String info = "This info has metadata."; + Map metadata = Map.of("source", "test-case", "priority", "high"); + McpSchema.CallToolRequest request = new McpSchema.CallToolRequest("embed_information", + Map.of("content", info, "metadata", metadata)); + McpSchema.CallToolResult result = tool.call(request, request.arguments()); + + assertNotNull(result); + assertFalse(result.isError()); + assertNotNull(result.structuredContent()); + assertTrue(result.structuredContent().containsKey("result")); + + // Verify search still works + RagSearchTool searchTool = new RagSearchTool(); + McpSchema.CallToolRequest searchRequest = new McpSchema.CallToolRequest("search_dsl_documentation", Map.of("query", "info has metadata")); + McpSchema.CallToolResult searchResult = searchTool.call(searchRequest, searchRequest.arguments()); + + assertNotNull(searchResult); + assertFalse(searchResult.isError()); + String content = ((McpSchema.TextContent) searchResult.content().get(0)).text(); + assertTrue(content.contains("This info has metadata.")); + } +} diff --git a/test-data/docs/dsl-guide.md b/test-data/docs/dsl-guide.md new file mode 100644 index 0000000..1fd3b98 --- /dev/null +++ b/test-data/docs/dsl-guide.md @@ -0,0 +1,40 @@ +# DSL Documentation Guide + +## DiagnosticService +The `DiagnosticService` is the core component for managing diagnostics in the system. +It allows you to define diagnostic rules and actions. + +Example: +```dsl +DiagnosticService { + rule "CheckEngineLight" { + condition: engine.status == ERROR + action: notify("Engine error detected") + } +} +``` + +## NotificationService +The `NotificationService` handles sending notifications to various channels. + +Example: +```dsl +NotificationService { + channel "Email" { + address: "admin@example.com" + } +} +``` + +## DataProcessor +The `DataProcessor` is used for processing incoming data streams. +It supports various transformation functions. + +Example: +```dsl +DataProcessor { + input: "sensor_data" + transform: map(value -> value * 2) + output: "processed_data" +} +``` diff --git a/test-data/docs/syntax_guide.md b/test-data/docs/syntax_guide.md new file mode 100644 index 0000000..cd799da --- /dev/null +++ b/test-data/docs/syntax_guide.md @@ -0,0 +1,17 @@ +# DSL Syntax Guide: DiagnosticService + +To define a diagnostic service in the OTX/ODX abstraction layer, use the `DiagnosticService` keyword. + +## Syntax +```dsl +DiagnosticService { + request: + response: + timeout: ms +} +``` + +## Rules +* The service name must be UpperCamelCase. +* Timeouts are strictly defined in milliseconds. +* Use the `extends` keyword to inherit properties from a base service. diff --git a/test-data/docs/units_manual.md b/test-data/docs/units_manual.md new file mode 100644 index 0000000..77483bf --- /dev/null +++ b/test-data/docs/units_manual.md @@ -0,0 +1,12 @@ +# Working with Units + +The DSL strictly types physical units to prevent conversion errors between OTX and ODX. + +## Defining a Unit +Use the `Unit` keyword followed by the display symbol. + +Example: +`Unit Speed [km/h]` + +## Common Errors +Never use string literals for units in a `DiagnosticService`. Always reference the typed Unit definition. diff --git a/test-data/examples/body_control.dsl b/test-data/examples/body_control.dsl new file mode 100644 index 0000000..01398c6 --- /dev/null +++ b/test-data/examples/body_control.dsl @@ -0,0 +1,13 @@ +// Example: Door Lock Control + +package com.vehicle.body + +DiagnosticService LockDoors { + request: 0x2E0101 + response: 0x6E0101 + timeout: 2000 ms +} + +DiagnosticService UnlockDoors extends LockDoors { + request: 0x2E0100 +} diff --git a/test-data/examples/powertrain.dsl b/test-data/examples/powertrain.dsl new file mode 100644 index 0000000..f87d5e1 --- /dev/null +++ b/test-data/examples/powertrain.dsl @@ -0,0 +1,12 @@ +// Example: Reading Engine RPM + +package com.vehicle.powertrain + +Unit Rpm [rotations/m] + +DiagnosticService ReadEngineSpeed { + request: 0x22F40C + response: 0x62F40C + timeout: 500 ms + return: Rpm +}