{"id":247172,"date":"2026-06-03T09:07:00","date_gmt":"2026-06-03T07:07:00","guid":{"rendered":"https:\/\/graphwise.ai\/?post_type=blog-post&#038;p=247172"},"modified":"2026-07-10T05:33:31","modified_gmt":"2026-07-10T03:33:31","slug":"precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch","status":"publish","type":"blog-post","link":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/","title":{"rendered":"Precise Semantic Retrieval: Implementing Chunk-level Vector Search with GraphDB and Elasticsearch"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">When working with large documents, <a href=\"https:\/\/gws-sso-test.graphwise.ai\/fundamentals\/what-is-semantic-search\/\" target=\"_blank\" rel=\"noopener\">semantic search<\/a> at the document level is often insufficient. Large texts frequently contain multiple distinct topics, and indexing them as a single unit can cause truncation. This may happen either because the embeddings sent to the Graphwise Transformer client exceed 4 MB (larger documents cannot fit within gRPC limitations) or due to size restrictions of the embedding model used by the transformer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A more precise approach is to split documents into smaller logical segments (chunks) and generate embeddings per chunk.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With the introduction of <strong>vector search within nested fields<\/strong> in <a href=\"https:\/\/gws-sso-test.graphwise.ai\/components\/graphdb\/\" target=\"_blank\" rel=\"noopener\">GraphDB 11.3<\/a>, it is now possible to model and index these chunks as structured nested objects in Elasticsearch while preserving their semantic integrity. This enables accurate chunk-level vector similarity search without losing the relationship between different object fields.<\/p>\n\n\n\n<h2 id='how-to-set-it-up'  id=\"boomdevs_1\" class=\"wp-block-heading\" id=\"h-how-to-set-it-up\">How to set it up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following steps describe the complete process \u2014 from preparing chunked RDF data, through configuring the Graphwise Transformer client and GraphDB, to creating the Elasticsearch connector and executing nested vector search queries.<\/p>\n\n\n\n<h3 id='step-1-generate-chunked-rdf-data'  id=\"boomdevs_2\" class=\"wp-block-heading\" id=\"h-step-1-generate-chunked-rdf-data\">Step 1: Generate chunked RDF data<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use the <code>chunker.py<\/code> script to generate an <a href=\"https:\/\/gws-sso-test.graphwise.ai\/fundamentals\/what-is-rdf\/\" target=\"_blank\" rel=\"noopener\">RDF<\/a> dataset from a TSV file. The script can be found at <a href=\"https:\/\/github.com\/Ontotext-AD\/document-chunker-rdf\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/Ontotext-AD\/document-chunker-rdf<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As mentioned earlier, if the source documents are very long, Elasticsearch may index only part of the content. To avoid this behavior, split each long document into smaller chunks and index each chunk separately.<\/p>\n\n\n\n<h3 id='step-2-start-the-graphwise-transformer-client-and-elasticsearch'  id=\"boomdevs_3\" class=\"wp-block-heading\" id=\"h-step-2-start-the-graphwise-transformer-client-and-elasticsearch\">Step 2: Start the Graphwise Transformer client and Elasticsearch<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Graphwise Transformer is a Python gRPC server that serves sentence embeddings via gRPC. By default, it listens on port 5050 and is started as follows:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>docker build -t graphwise-transformer:$(git rev-parse &#8211;short HEAD) .<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>docker run &#8211;rm -p 5050:5050 -e GRAPHWISE_CONFIG=\/app\/config.properties graphwise-transformer:$(git rev-parse &#8211;short HEAD)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This uses the default configuration for port and sentence embeddings model &#8211; <strong>port 5050<\/strong> and the <strong>sentence-transformers\/paraphrase-multilingual-MiniLM-L12-v2<\/strong> embedding model. Both can be changed by modifying the <code>config.properties<\/code>. Further information about the client is available in the <a href=\"https:\/\/graphdb.ontotext.com\/documentation\/11.3\/embedding-model-configuration.html#using-a-local-embedding-model-deployed-with-graphwise-transformer\" target=\"_blank\" rel=\"noopener\">Graphwise documentation<\/a>.<\/p>\n\n\n\n<h3 id='step-3-start-graphdb-with-the-required-properties-configured'  id=\"boomdevs_4\" class=\"wp-block-heading\" id=\"h-step-3-start-graphdb-with-the-required-properties-configured\">Step 3: Start GraphDB with the required properties configured<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GraphDB can be started using the official dockerhub image or the provided distributions for Windows, Linux, and MacOS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start GraphDB with the following properties configured (see the <a href=\"https:\/\/graphdb.ontotext.com\/documentation\/11.3\/directories-and-config-properties.html#configuration\" target=\"_blank\" rel=\"noopener\">configuration reference in our documentation<\/a>):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>graphwise.transformer.address=localhost:5050<\/strong><\/li>\n\n\n\n<li><strong>graphwise.transformer.batch.size=128<\/strong><\/li>\n\n\n\n<li><strong>graphwise.transformer.embedding.model.name=&lt;model_name> if the default model has been changed\u00a0<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The third property is only required if the default model has been changed. More detail on embedding model configuration is available in the <a href=\"https:\/\/graphdb.ontotext.com\/documentation\/11.3\/embedding-model-configuration.html#using-a-local-embedding-model-deployed-with-graphwise-transformer\" target=\"_blank\" rel=\"noopener\">documentation<\/a>.<\/p>\n\n\n\n<h3 id='step-4-create-a-general-repository-in-graphdb'  id=\"boomdevs_5\" class=\"wp-block-heading\" id=\"h-step-4-create-a-general-repository-in-graphdb\">Step 4: Create a general repository in GraphDB<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open GraphDB Workbench and navigate to the repository management section. Create a new general repository. No additional configuration is required at this stage \u2014 the default settings are sufficient to proceed.<\/p>\n\n\n\n<h3 id='step-5-import-the-generated-rdf-data-into-the-repository'  id=\"boomdevs_6\" class=\"wp-block-heading\" id=\"h-step-5-import-the-generated-rdf-data-into-the-repository\">Step 5: Import the generated RDF data into the repository<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once the repository is set up, navigate to the Import menu within GraphDB Workbench. Select the RDF file generated in the previous steps and import it into the newly created repository. After the import completes, verify that the data has been loaded correctly by checking the Explore menu.<\/p>\n\n\n\n<h3 id='step-6-create-an-elasticsearch-index-configured-for-vector-embeddings'  id=\"boomdevs_7\" class=\"wp-block-heading\" id=\"h-step-6-create-an-elasticsearch-index-configured-for-vector-embeddings\">Step 6: Create an Elasticsearch index configured for vector embeddings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Each chunk will be indexed as an individual document with its own embedding, using the <code>native:nested<\/code> datatype. This enables semantic similarity search across all chunks while keeping each chunk&#8217;s fields correctly associated with one another.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"classic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> \nPREFIX :\nPREFIX inst:\n\nINSERT DATA {\n\tinst:chunks :createConnector '''\n{\n  \"fields\": [\n\t{\n      \"fieldName\": \"chunks\",\n      \"propertyChain\": [\"http:\/\/schema.org\/hasPart\"],\n      \"datatype\": \"native:nested\",\n      \"objectFields\": [\n        {\n          \"fieldName\": \"text_content\",\n          \"propertyChain\": [\"http:\/\/schema.org\/text\"]\n        },\n\t\t{\n          \"fieldName\": \"index\",\n          \"propertyChain\": [\"http:\/\/schema.org\/position\"]\n        },\n        {\n          \"fieldName\": \"vector\",\n          \"propertyChain\": [\"http:\/\/schema.org\/text\"],\n          \"datatype\": \"vector\"\n        }\n      ]\n    }\n  ],\n  \"languages\": [],\n  \"types\": [\"http:\/\/schema.org\/CreativeWork\"],\n  \"readonly\": false,\n  \"detectFields\": false,\n  \"importGraph\": false,\n  \"skipInitialIndexing\": false,\n  \"elasticsearchClusterSniff\": false,\n  \"elasticsearchNode\": \"http:\/\/localhost:9200\",\n  \"manageIndex\": true,\n  \"manageMapping\": true,\n  \"bulkUpdateBatchSize\": 5000,\n  \"embeddingModel\" : \"com.ontotext.embeddings.GraphwiseTransformerClient\"\n}\n''' .\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This SPARQL INSERT DATA query creates an Elasticsearch connector (index in Elasticsearch) inside GraphDB named \u201cchunks\u201d. It indexes RDF resources of type <code>schema:CreativeWork<\/code> as Elasticsearch documents, each containing nested chunks. (\u201cChunks\u201d field is created with datatype <code>native:nested<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For each <code>CreativeWork<\/code>, the connector follows <code>schema:hasPart<\/code> to extract chunk resources and maps their <code>schema:text<\/code> and <code>schema:position<\/code> properties into nested object fields (<code>text_content<\/code>, <code>index<\/code>). The vector field is also derived from <code>schema:text<\/code>, but because its datatype is &#8220;vector&#8221;, GraphDB generates an embedding using the configured model com.ontotext.embeddings.GraphwiseTransformerClient, which connects to the graphwise-transformer service.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With <code>manageIndex<\/code> and <code>manageMapping<\/code> enabled, GraphDB automatically creates and maintains the Elasticsearch index and mapping, performs initial indexing of existing data, and pushes updates in bulk batches.&nbsp; The result is a chunk-level nested vector index that supports semantic similarity search.<\/p>\n\n\n\n<h3 id='step-7-search-for-documents-containing-the-most-similar-chunk'  id=\"boomdevs_8\" class=\"wp-block-heading\" id=\"h-step-7-search-for-documents-containing-the-most-similar-chunk\">Step 7: Search for documents containing the most similar chunk<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The following query searches for documents containing the chunk most semantically similar to a given input:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"classic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">PREFIX inst: \nPREFIX conn: \n\nSELECT ?doc ?score WHERE {\n    ?search a inst:chunks ;\n            conn:query '''{\n                \"size\": 5,\n                \"query\": {\n\t         \"nested\": {\n                        \"path\": \"chunks\",\n                        \"query\": {\n                            \"knn\": {\n                                \"field\": \"chunks.vector\",\n                                \"query_vector\": \"Graph Database, then import  query data with the (OpenRDF) GraphDB Workbench, and finally explore and visualise data with the build in visualisation tools.\",\n                                \"k\": 5,\n                                \"num_candidates\": 50\n                            }\n                        }\n                    }\n                }\n            }''' ;\n            conn:entities ?doc .\n    ?doc conn:score ?score .\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The query executes a vector similarity search through the Elasticsearch connector <code>inst:chunks<\/code> defined in GraphDB and returns the top 5 RDF documents ranked by semantic relevance. The <code>conn:query<\/code> JSON block is passed directly to Elasticsearch and performs a nested k-nearest neighbors (kNN) search on the <code>chunks.vector<\/code> field. This means that it searches inside the nested chunks objects created by the connector.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>query_vector<\/code> is supplied as raw text rather than a numeric vector. GraphDB automatically converts this text into an embedding using the configured embedding model (via the Graphwise Transformer client) before sending the kNN request to Elasticsearch. The search retrieves the 5 most similar chunk vectors (<code>k: 5<\/code>) while evaluating 50 candidates for better recall (<code>num_candidates: 50<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The connector then maps the matching Elasticsearch documents back to their corresponding RDF resources (<code>conn:entities ?doc<\/code>) and exposes their relevance score via <code>conn:score ?score<\/code>. In this way, the SPARQL result contains each matching RDF document along with its vector similarity score. Note that while each individual chunk can only be returned once, the same parent document, for example, <code>CreativeWork<\/code>, may appear multiple times in the results if several of its chunks independently match the query.<\/p>\n\n\n\n<h2 id='why-nested-fields-matter'  id=\"boomdevs_9\" class=\"wp-block-heading\" id=\"h-why-nested-fields-matter\">Why nested fields matter<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each <code>schema:CreativeWork<\/code> instance contains multiple logical sub-units (chunks), and each chunk carries its own text, position, and embedding vector. Declaring chunks as a nested field in Elasticsearch ensures that each chunk is stored and queried as an independent inner document, rather than being flattened into the parent document.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Without nesting, Elasticsearch flattens arrays of objects into parallel arrays of fields, breaking field associations. For example, <code>chunks.text_content<\/code>, <code>chunks.index<\/code>, and <code>chunks.vector<\/code> would lose their one-to-one relationship. A vector match from one chunk could then incorrectly combine with metadata from a different chunk inside the same parent document. This leads to false positives and incorrect scoring. The <a href=\"https:\/\/www.elastic.co\/docs\/reference\/elasticsearch\/mapping-reference\/nested#nested-arrays-flattening-objects\" target=\"_blank\" rel=\"noopener\">official Elasticsearch documentation<\/a> provides a good explanation of this topic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By using nested objects, Elasticsearch internally creates hidden child documents for each chunk. The nested query evaluates similarity per chunk, keeping scoring isolated within each specific chunk context. In the kNN query above, similarity is computed against each individual <code>chunks.vector<\/code> \u2014 not against the parent document as a whole \u2014 which is what makes chunk retrieval both precise and reliable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Want to get some hands-on experience?<\/strong><\/p>\n\n\n\n<div class=\"hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-193575182687\"\n  style=\"max-width:100%; max-height:100%; width:700px;height:266.515625px\" data-hubspot-wrapper-cta-id=\"193575182687\">\n  <a href=\"https:\/\/cta-service-cms2.hubspot.com\/web-interactives\/public\/v1\/track\/redirect?encryptedPayload=AVxigLI2Va9vRmKnJGBiz%2BY8TJTe4xeTC%2Bd9lgCZqmVrhgL%2BV6R9ib9P5jDlDFFmUIiR5gMZRq43S4DBCfO4obdN8mKEZUls7l0dQuGFHw%2Fa1detIduw2esvZQy6JsXbAa4%2FPnDwjxbSQUU7BuH4Wb9D6X3MsG5nTV1%2FSp1LaEsaIhWXUqMwrKo%3D&#038;webInteractiveContentId=193575182687&#038;portalId=5619976\" target=\"_blank\" rel=\"noopener\" crossorigin=\"anonymous\">\n    <img decoding=\"async\" alt=\"Start exploring Graphwise Sandbox!\" loading=\"lazy\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/5619976\/interactive-193575182687.png\" style=\"height: 100%; width: 100%; object-fit: fill\"\n      onerror=\"this.style.display='none'\" \/>\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"Read our technical guide to implementing chunk-level vector search using GraphDB &#038; Elasticsearch","protected":false},"author":10,"featured_media":247256,"template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","content-type":"","_EventAllDay":false,"_EventTimezone":"","_EventStartDate":"","_EventEndDate":"","_EventStartDateUTC":"","_EventEndDateUTC":"","_EventShowMap":false,"_EventShowMapLink":false,"_EventURL":"","_EventCost":"","_EventCostDescription":"","_EventCurrencySymbol":"","_EventCurrencyCode":"","_EventCurrencyPosition":"","_EventDateTimeSeparator":"","_EventTimeRangeSeparator":"","_EventOrganizerID":[],"_EventVenueID":[],"_OrganizerEmail":"","_OrganizerPhone":"","_OrganizerWebsite":"","_VenueAddress":"","_VenueCity":"","_VenueCountry":"","_VenueProvince":"","_VenueState":"","_VenueZip":"","_VenuePhone":"","_VenueURL":"","_VenueStateProvince":"","_VenueLat":"","_VenueLng":"","_VenueShowMap":false,"_VenueShowMapLink":false},"categories":[23,21],"tags":[],"persona":[406],"resource-category":[17],"blog-category":[],"ppma_author":[395,98],"class_list":["post-247172","blog-post","type-blog-post","status-publish","has-post-thumbnail","hentry","category-graph-database","category-graph-rag","persona-kevin","resource-category-blog-post"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Implementing Chunk-level Vector Search with GraphDB and Elasticsearch<\/title>\n<meta name=\"description\" content=\"A step-by-step technical guide to implementing chunk-level vector search using GraphDB &amp; Elasticsearch for more accurate &amp; reliable retrieval\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Precise Semantic Retrieval: Implementing Chunk-level Vector Search with GraphDB and Elasticsearch\" \/>\n<meta property=\"og:description\" content=\"A step-by-step technical guide to implementing chunk-level vector search using GraphDB &amp; Elasticsearch for more accurate &amp; reliable retrieval\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/\" \/>\n<meta property=\"og:site_name\" content=\"Graphwise\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-10T03:33:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/\",\"name\":\"Implementing Chunk-level Vector Search with GraphDB and Elasticsearch\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Blog-posts-dark-blue.png\",\"datePublished\":\"2026-06-03T07:07:00+00:00\",\"dateModified\":\"2026-07-10T03:33:31+00:00\",\"description\":\"A step-by-step technical guide to implementing chunk-level vector search using GraphDB & Elasticsearch for more accurate & reliable retrieval\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Blog-posts-dark-blue.png\",\"contentUrl\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Blog-posts-dark-blue.png\",\"width\":2000,\"height\":1000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog Posts\",\"item\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Precise Semantic Retrieval: Implementing Chunk-level Vector Search with GraphDB and Elasticsearch\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/\",\"name\":\"Graphwise\",\"description\":\"AI THRIVES ON WHOLE DATA\",\"publisher\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#organization\",\"name\":\"Graphwise\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/graphwise-logo-horizontal-slogan.svg\",\"contentUrl\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/graphwise-logo-horizontal-slogan.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"Graphwise\"},\"image\":{\"@id\":\"https:\\\/\\\/gws-sso-test.graphwise.ai\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/graphwise\\\/\"],\"description\":\"Graphwise enables organizations to unlock ROI for enterprise AI by delivering the most comprehensive and trusted industry solution in the field of knowledge graphs and semantic AI technologies. As enterprises pour millions into AI investment, Graphwise delivers the critical knowledge graph infrastructure to ensure enterprises are ready to realize the technology\u2019s full potential, is trusted, and can be implemented at scale. Graphwise, which is the result of the merger between tech visionaries Ontotext and Semantic Web Company, has over 200 employees worldwide, with offices located across North America, Europe and APAC.\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"201\",\"maxValue\":\"500\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Implementing Chunk-level Vector Search with GraphDB and Elasticsearch","description":"A step-by-step technical guide to implementing chunk-level vector search using GraphDB & Elasticsearch for more accurate & reliable retrieval","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"de_DE","og_type":"article","og_title":"Precise Semantic Retrieval: Implementing Chunk-level Vector Search with GraphDB and Elasticsearch","og_description":"A step-by-step technical guide to implementing chunk-level vector search using GraphDB & Elasticsearch for more accurate & reliable retrieval","og_url":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/","og_site_name":"Graphwise","article_modified_time":"2026-07-10T03:33:31+00:00","og_image":[{"width":2000,"height":1000,"url":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/","url":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/","name":"Implementing Chunk-level Vector Search with GraphDB and Elasticsearch","isPartOf":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/#primaryimage"},"image":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/#primaryimage"},"thumbnailUrl":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png","datePublished":"2026-06-03T07:07:00+00:00","dateModified":"2026-07-10T03:33:31+00:00","description":"A step-by-step technical guide to implementing chunk-level vector search using GraphDB & Elasticsearch for more accurate & reliable retrieval","breadcrumb":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/#primaryimage","url":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png","contentUrl":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png","width":2000,"height":1000},{"@type":"BreadcrumbList","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/precise-semantic-retrieval-implementing-chunk-level-vector-search-with-graphdb-and-elasticsearch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gws-sso-test.graphwise.ai\/de\/"},{"@type":"ListItem","position":2,"name":"Blog Posts","item":"https:\/\/gws-sso-test.graphwise.ai\/de\/blog\/"},{"@type":"ListItem","position":3,"name":"Precise Semantic Retrieval: Implementing Chunk-level Vector Search with GraphDB and Elasticsearch"}]},{"@type":"WebSite","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#website","url":"https:\/\/gws-sso-test.graphwise.ai\/de\/","name":"Graphwise","description":"AI THRIVES ON WHOLE DATA","publisher":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gws-sso-test.graphwise.ai\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#organization","name":"Graphwise","url":"https:\/\/gws-sso-test.graphwise.ai\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#\/schema\/logo\/image\/","url":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2024\/10\/graphwise-logo-horizontal-slogan.svg","contentUrl":"https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2024\/10\/graphwise-logo-horizontal-slogan.svg","width":"1024","height":"1024","caption":"Graphwise"},"image":{"@id":"https:\/\/gws-sso-test.graphwise.ai\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/graphwise\/"],"description":"Graphwise enables organizations to unlock ROI for enterprise AI by delivering the most comprehensive and trusted industry solution in the field of knowledge graphs and semantic AI technologies. As enterprises pour millions into AI investment, Graphwise delivers the critical knowledge graph infrastructure to ensure enterprises are ready to realize the technology\u2019s full potential, is trusted, and can be implemented at scale. Graphwise, which is the result of the merger between tech visionaries Ontotext and Semantic Web Company, has over 200 employees worldwide, with offices located across North America, Europe and APAC.","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"201","maxValue":"500"}}]}},"pbg_featured_image_src":{"full":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png",2000,1000,false],"thumbnail":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-150x150.png",150,150,true],"medium":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-300x150.png",300,150,true],"medium_large":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-768x384.png",768,384,true],"large":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-1024x512.png",1024,512,true],"1536x1536":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-1536x768.png",1536,768,true],"2048x2048":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png",2000,1000,false],"et-pb-post-main-image":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-400x250.png",400,250,true],"et-pb-post-main-image-fullwidth":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-1080x675.png",1080,675,true],"et-pb-portfolio-image":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-400x284.png",400,284,true],"et-pb-portfolio-module-image":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-510x382.png",510,382,true],"et-pb-portfolio-image-single":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-1080x540.png",1080,540,true],"et-pb-gallery-module-image-portrait":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-400x516.png",400,516,true],"et-pb-post-main-image-fullwidth-large":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png",2000,1000,false],"et-pb-image--responsive--desktop":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-1280x640.png",1280,640,true],"et-pb-image--responsive--tablet":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-980x490.png",980,490,true],"et-pb-image--responsive--phone":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue-480x240.png",480,240,true],"crp_thumbnail":["https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Blog-posts-dark-blue.png",150,75,false]},"pbg_author_info":{"display_name":"Gergana Petkova","author_link":"https:\/\/gws-sso-test.graphwise.ai\/de\/author\/petkovag\/","author_img":"<img alt='Vesela Petrova' src='https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Vesela_Petrova.jpeg' srcset='https:\/\/gws-sso-test.graphwise.ai\/wp-content\/uploads\/2026\/03\/Vesela_Petrova.jpeg 2x' class='avatar avatar-128 photo avatar-default' height='128' width='128' decoding='async'\/>"},"pbg_comment_info":" No Comments","pbg_excerpt":"Read our technical guide to implementing chunk-level vector search using GraphDB & Elasticsearch","_links":{"self":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post\/247172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post"}],"about":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/types\/blog-post"}],"author":[{"embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/users\/10"}],"version-history":[{"count":6,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post\/247172\/revisions"}],"predecessor-version":[{"id":250390,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-post\/247172\/revisions\/250390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/media\/247256"}],"wp:attachment":[{"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/media?parent=247172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/categories?post=247172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/tags?post=247172"},{"taxonomy":"persona","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/persona?post=247172"},{"taxonomy":"resource-category","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/resource-category?post=247172"},{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/blog-category?post=247172"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/gws-sso-test.graphwise.ai\/de\/wp-json\/wp\/v2\/ppma_author?post=247172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}