{"id":17132,"date":"2025-01-29T14:01:30","date_gmt":"2025-01-29T12:01:30","guid":{"rendered":"https:\/\/spatialworld.fi\/?page_id=17132"},"modified":"2025-02-05T17:35:10","modified_gmt":"2025-02-05T15:35:10","slug":"17076-2-2-3","status":"publish","type":"page","link":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/","title":{"rendered":"LLM RAG"},"content":{"rendered":"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h1 class=\"reader-article-header__title\" dir=\"ltr\"><span data-scaffold-immersive-reader-title=\"\"><span class=\"\">Kuinka kysy\u00e4 paikalliselta LLM:lt\u00e4 kysymys k\u00e4ytt\u00e4m\u00e4ll\u00e4 omaa asiakirjakontekstiasi<\/span><\/span><\/h1>\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][image_with_animation image_url=&#8221;17216&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;75%&#8221; max_width_mobile=&#8221;default&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3 id=\"ember51\" class=\"ember-view reader-text-block__heading-3\"><span>RAG:n (Retrieval-Augmented Generation) tutkiminen FME:n, DuckDB:n ja Ollaman kanssa<\/span><\/h3>\n<p id=\"ember52\" class=\"ember-view reader-text-block__paragraph\"><span>RAG eli Retrieval-Augmented Generation kattaa AI-mallien ja ainutlaatuisten tietojesi v\u00e4lisen kuilun. Haemalla asiaankuuluvat tiedot asiakirjoistasi ja sy\u00f6tt\u00e4m\u00e4ll\u00e4 ne teko\u00e4lymalliin, voit luoda tarkempia, kontekstikohtaisia \u200b\u200bvastauksia. T\u00e4m\u00e4 opetusohjelma osoittaa, kuinka FME:n avulla luodaan matalakoodin RAG-ty\u00f6nkulku, jonka avulla voit kysy\u00e4 paikalliselta LLM:lt\u00e4 (kuten Ollamalta) kysymyksi\u00e4 k\u00e4ytt\u00e4m\u00e4ll\u00e4 asiakirjaasi kontekstina.<\/span><\/p>\n<p id=\"ember53\" class=\"ember-view reader-text-block__paragraph\"><span>Ohjaamme sinut n\u00e4iden vaiheiden l\u00e4pi:<\/span><\/p>\n<ol>\n<li><span>Tekstin poimiminen asiakirjasta.<\/span><\/li>\n<li><span>Tekstin valmistelu.<\/span><\/li>\n<li><span>Tekstin esitt\u00e4minen vektoriavaruudessa.<\/span><\/li>\n<li><span>Sen tallentaminen ja analysointi tietokantaan.<\/span><\/li>\n<li><span>Haetaan osuvaa sis\u00e4lt\u00f6\u00e4.<\/span><\/li>\n<li><span>Sis\u00e4ll\u00f6n k\u00e4ytt\u00e4minen AI-mallin kyselyyn.<\/span><\/li>\n<\/ol>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember55\" class=\"ember-view reader-text-block__heading-3\"><span>Esimerkkimme: Kysyminen ALADIN-mallista<\/span><\/h3>\n<p id=\"ember56\" class=\"ember-view reader-text-block__paragraph\"><span>Kuvittele, ett\u00e4 analysoit tieteellist\u00e4 artikkelia kaupunkien l\u00e4mp\u00f6saarista. P\u00e4iv\u00e4n kysymys on:\u00a0<\/span><strong><span>&#8220;Mik\u00e4 on ALADIN-malli?&#8221;<\/span><\/strong><span>\u00a0&#x1f42b;&#x2600;&#xfe0f;<\/span><\/p>\n<p id=\"ember57\" class=\"ember-view reader-text-block__paragraph\"><span>K\u00e4yt\u00e4mme FME:n tuottamaa ty\u00f6nkulkua paperin asiaankuuluvien osien hakemiseen ja kontekstitietoisen vastauksen antamiseen paikallisesta teko\u00e4lymallista.<\/span><\/p>\n<h3 id=\"ember58\" class=\"ember-view reader-text-block__heading-3\"><span>Vaihe 1: Tekstin purkaminen asiakirjasta<\/span><\/h3>\n<p id=\"ember59\" class=\"ember-view reader-text-block__paragraph\"><strong><span>K\u00e4ytt\u00f6tapaus<\/span><\/strong><span>\u00a0: Aloita PDF-tiedostosta tai vastaavasta asiakirjasta ja muunna se luettavaksi tekstiksi k\u00e4sittely\u00e4 varten.<\/span><\/p>\n<p id=\"ember60\" class=\"ember-view reader-text-block__paragraph\"><span>Esimerkkidokumenttimme:<\/span><\/p>\n<ul>\n<li><strong><span>Otsikko<\/span><\/strong><span>\u00a0: Arvio kaupunkien vaikutuksista pintaan ja n\u00e4yt\u00f6n tason l\u00e4mp\u00f6tilaan ALADIN-ilmastopohjaisessa SURFEX-maapintamallissa Budapestille<\/span><\/li>\n<li><strong><span>Tekij\u00e4t<\/span><\/strong><span>\u00a0: Zsebeh\u00e1zi &amp; Mah\u00f3<\/span><\/li>\n<li><strong><span>Julkaistu<\/span><\/strong><span>\u00a0:\u00a0<\/span><em><span>Atmosphere<\/span><\/em><span>\u00a0, voi. 12, ei. 6, 709<\/span><\/li>\n<\/ul>\n<p id=\"ember62\" class=\"ember-view reader-text-block__paragraph\"><strong><span>K\u00e4ytetty lukija: PDF<\/span><\/strong><\/p>\n<p id=\"ember63\" class=\"ember-view reader-text-block__paragraph\"><span>T\u00e4m\u00e4 ominaisuustyyppi edustaa PDF-tiedostoista purettua tekstisis\u00e4lt\u00f6\u00e4.<\/span><\/p>\n<p id=\"ember64\" class=\"ember-view reader-text-block__paragraph\"><span>FME:n kooditon muotoilu tekee yhteyden muodostamisesta PDF-tiedostoon yksinkertaista. Ved\u00e4 ja pudota tiedosto, m\u00e4\u00e4rit\u00e4 asetukset ja olet valmis k\u00e4sittelem\u00e4\u00e4n teksti\u00e4. Voit my\u00f6s poimia kuvia, tekstin sijaintia jne. Kaikki n\u00e4m\u00e4 voivat sy\u00f6tt\u00e4\u00e4 sis\u00e4isen tietokantaasi.<\/span><\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17215&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"reader-image-block reader-image-block--full-width\" style=\"text-align: center;\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\">\n<div class=\"reader-image-block reader-image-block--full-width\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\"><em><span>Teksti poimittu, yksi ominaisuus sivua kohden<\/span><\/em><\/figcaption><\/figure>\n<\/div>\n<\/figcaption><\/figure>\n<\/div>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<div class=\"wpb_text_column wpb_content_element \">\n<div class=\"wpb_wrapper\">\n<h3 id=\"ember66\" class=\"ember-view reader-text-block__heading-3\"><span>Vaihe 2: Tekstin valmistelu upottamista varten (tietokannan objektit)<\/span><\/h3>\n<p id=\"ember67\" class=\"ember-view reader-text-block__paragraph\"><span>Jaa suuri teksti pienemmiksi, merkityksellisiksi paloiksi, jotta se voidaan tallentaa saadaksesi tarvittavat tiedot tietokantaan. Jokaisella palalla on my\u00f6hemmin sen koordinaatit vektoriavaruudessa.<\/span><\/p>\n<p id=\"ember68\" class=\"ember-view reader-text-block__paragraph\"><strong><span>K\u00e4ytetyt muuntajat<\/span><\/strong><span>\u00a0:<\/span><\/p>\n<ul>\n<li><strong><span>StringReplacer<\/span><\/strong><span>\u00a0: Puhdistaa ja normalisoi tekstin.<\/span><\/li>\n<li><strong><span>SubstringExtractor<\/span><\/strong><span>\u00a0: Jakaa tekstin hallittavissa oleviin osiin (esim. 1 000 merkki\u00e4), joissa on p\u00e4\u00e4llekk\u00e4isi\u00e4 segmenttej\u00e4 kontekstin s\u00e4ilytt\u00e4miseksi paremmin. K\u00e4ytimme FME:t\u00e4 saadaksemme s\u00e4\u00e4nn\u00f6llisen lauseen oikein.<\/span><\/li>\n<\/ul>\n<p id=\"ember70\" class=\"ember-view reader-text-block__paragraph\"><span>On t\u00e4rke\u00e4\u00e4 tasapainottaa kappaleen koko ja sis\u00e4lt\u00f6. Teko\u00e4lyn on helpompi k\u00e4sitell\u00e4 pienempi\u00e4 paloja, mutta niiden on silti sis\u00e4llett\u00e4v\u00e4 tarpeeksi merkityksellist\u00e4 tietoa, jotta kysymykseesi voidaan vastata tehokkaasti.<\/span><\/p>\n<\/div>\n<\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17214&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][image_with_animation image_url=&#8221;17091&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember72\" class=\"ember-view reader-text-block__heading-3\"><span>Vaihe 3: Tekstin esitt\u00e4minen vektoriavaruudessa<\/span><\/h3>\n<p id=\"ember73\" class=\"ember-view reader-text-block__paragraph\"><span>Muunna tekstipalojen merkitys numeerisiksi esityksiksi (vektoreiksi) vertailua ja hakua varten.<\/span><\/p>\n<p id=\"ember74\" class=\"ember-view reader-text-block__paragraph\"><strong><span>K\u00e4ytetyt muuntajat<\/span><\/strong><span>\u00a0:<\/span><\/p>\n<ul>\n<li><strong><span>HTTPCaller<\/span><\/strong><span>\u00a0: muodostaa yhteyden Ollaman API:hen vektoriesitysten luomiseksi.<\/span><\/li>\n<\/ul>\n<p id=\"ember76\" class=\"ember-view reader-text-block__paragraph\"><span>T\u00e4ss\u00e4 vaiheessa jokainen tekstipala muunnetaan vektoriesitykseen\u00a0<\/span><strong><span>,<\/span><\/strong><span>\u00a0joka vangitsee sen semanttisen merkityksen. N\u00e4iden vektorien avulla j\u00e4rjestelm\u00e4 voi verrata tekstikappaleita niiden sis\u00e4ll\u00f6n perusteella, mik\u00e4 mahdollistaa samankaltaisuuteen perustuvat haut my\u00f6hemmin.<\/span><\/p>\n<p id=\"ember77\" class=\"ember-view reader-text-block__paragraph\"><strong><span>Miksi k\u00e4ytt\u00e4\u00e4 Ollamaa?<\/span><\/strong><\/p>\n<ul>\n<li><span>Paikalliset teko\u00e4lymallit varmistavat tietojen yksityisyyden (t\u00e4ss\u00e4 nomic-embed-text).<\/span><\/li>\n<li><span>REST API tekee integroinnista yksinkertaista ja joustavaa, koska upottamista varten on oma p\u00e4\u00e4tepiste.<\/span><\/li>\n<\/ul>\n<div class=\"reader-image-block reader-image-block--full-width\"><\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17213&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<p style=\"text-align: center;\"><em><span class=\"VIpgJd-yAWNEb-VIpgJd-fmcmS-sn54Q\">HttpCaller-parametrit<\/span><\/em><\/p>\n<div class=\"img-with-aniamtion-wrap center\" data-max-width=\"100%\" data-max-width-mobile=\"default\" data-shadow=\"none\" data-animation=\"none\">\n<div class=\"inner\">\n<div class=\"hover-wrap\"><\/div>\n<\/div>\n<\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17212&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<p style=\"text-align: center;\"><em><span class=\"VIpgJd-yAWNEb-VIpgJd-fmcmS-sn54Q\">Kyselyn Json-tuloste, yli 700 ulottuvuuden vektori, joka edustaa tiedon sijaintia<\/span><\/em><\/p>\n<div class=\"wpb_text_column wpb_content_element \">\n<div class=\"wpb_wrapper\"><\/div>\n<\/div>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember81\" class=\"ember-view reader-text-block__heading-3\"><span>Vaihe 4: Tallenna ja etsi relevanttia teksti\u00e4<\/span><\/h3>\n<p id=\"ember82\" class=\"ember-view reader-text-block__paragraph\"><span>Tallenna vektoriesitykset ja l\u00f6yd\u00e4 nopeasti kysymyksellesi osuvin teksti.<\/span><\/p>\n<ul>\n<li><strong><span>FeatureWriter<\/span><\/strong><span>\u00a0: Tallentaa vektoritiedot Parquet-tiedostoon tehokkuuden parantamiseksi.<\/span><\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17211&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<p style=\"text-align: center;\"><em><span>Tallentaa teksti\u00e4 ja vektoreita v\u00e4liaikaiseen parkettitiedostoon<\/span><\/em><\/p>\n<p><span>Upota kysymyksesi toiseen haaraan. Kysy\u00e4ksesi l\u00e4himm\u00e4t vektorit tarvitset kysymyksesi sijainnin.<\/span><\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17210&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<p style=\"text-align: center;\"><em><span>Kysymysten luominen ja kutsu upottamiseen p\u00e4\u00e4tepisteeseen<\/span><\/em><\/p>\n<p><span>Lataa tietokantaan ja tee kysely SQLExecutorin kautta.<\/span><\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17209&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<blockquote>\n<pre class=\"reader-text-block__code-block\">#Delimiter to send the requests to in memory duckdb in sequence\r\nFME_SQL_DELIMITER ;\r\n#Install  Vector Similarity Search Extension to be able to create an index and speed up search\r\nINSTALL vss;\r\nLOAD vss;\r\n#Create temp table from parquet. FLOAT[768] is an array of 768 dims (same as embedding from nomic)\r\nCREATE TABLE embeddings AS SELECT id, text, json_extract(content, '$')::FLOAT[768] AS embedding FROM read_parquet('embed.parquet');\r\n#Index creation, metric is specified to cosine but this is the default one) \r\nCREATE INDEX idx_embeddings_vss ON embeddings USING HNSW(embedding) WITH (metric = 'cosine');\r\n#Select the text from the 5 top answers (meaning closest in vector space)\r\nSELECT text FROM embeddings ORDER BY array_distance(embedding,@Value(_response_body)::FLOAT[768]) LIMIT 5;<\/pre>\n<\/blockquote>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<p id=\"ember89\" class=\"ember-view reader-text-block__paragraph\"><span>DuckDB antaa sinun tehd\u00e4 kyselyit\u00e4 n\u00e4ist\u00e4 vektoreista l\u00f6yt\u00e4\u00e4ksesi kysymyksesi kannalta oleellisimmat. Jos haluat k\u00e4ytt\u00e4\u00e4 toista tietokantaa, FME tekee vaihtamisesta saumatonta.<\/span><\/p>\n<p id=\"ember90\" class=\"ember-view reader-text-block__paragraph\"><strong><span>Miksi k\u00e4ytt\u00e4\u00e4 FME:t\u00e4?<\/span><\/strong><span>\u00a0: FME:n koodittomien tietokantaliittimien avulla voit mukauttaa ty\u00f6nkulkua mihin tahansa tietokantaan ilman teknisi\u00e4 esteit\u00e4.<\/span><\/p>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember92\" class=\"ember-view reader-text-block__heading-3\"><span>Vaihe 5: Kysy AI-mallilta kysymyksesi<\/span><\/h3>\n<p id=\"ember93\" class=\"ember-view reader-text-block__paragraph\"><strong><span>K\u00e4ytt\u00f6tapaus<\/span><\/strong><span>\u00a0: Yhdist\u00e4 haettu teksti kysymykseesi ja l\u00e4het\u00e4 se teko\u00e4lymalliin vastausta varten.<\/span><\/p>\n<p id=\"ember94\" class=\"ember-view reader-text-block__paragraph\"><strong><span>K\u00e4ytetyt muuntajat<\/span><\/strong><span>\u00a0:<\/span><\/p>\n<ul>\n<li><strong><span>AttributeCreator<\/span><\/strong><span>\u00a0: Yhdist\u00e4\u00e4 kysymyksen ja haetun tekstin. Valmistelee POST-pyynt\u00f6si JSON-rungon.<\/span><\/li>\n<li><strong><span>StringCleaner<\/span><\/strong><span>\u00a0: Auttaa poistamaan kielletyt merkit JSON-muodossa l\u00e4hetett\u00e4v\u00e4st\u00e4 tekstist\u00e4.<\/span><\/li>\n<li><strong><span>HTTPCaller<\/span><\/strong><span>\u00a0: L\u00e4hett\u00e4\u00e4 yhdistetyt tiedot Ollamaan vastausten luomista varten. Varo kontekstin kokoa ja aikakatkaisua.<\/span><\/li>\n<\/ul>\n<p id=\"ember96\" class=\"ember-view reader-text-block__paragraph\"><span>Teko\u00e4lymalli k\u00e4ytt\u00e4\u00e4 haettuja tekstikappaleita kontekstina luodakseen tietoisen ja asiaankuuluvan vastauksen kysymykseesi.<\/span><\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17208&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<blockquote>\n<pre class=\"reader-text-block__code-block\">{\r\n  \"model\": \"@Value(model)\",\r\n  \"prompt\": \" Please use the following article context : @Value(text). Then, based on it and your knowledge, answer : @Value(prompt)\",\r\n  \"stream\": false,\r\n  \"options\": {\r\n    \"num_ctx\": 4000\r\n  }\r\n}<\/pre>\n<\/blockquote>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember99\" class=\"ember-view reader-text-block__heading-3\"><span>Vaihe 6: Tulosten esitt\u00e4minen<\/span><\/h3>\n<p id=\"ember100\" class=\"ember-view reader-text-block__paragraph\"><span>Muotoile ja toimita teko\u00e4lyn vastaus haluamassasi muodossa.<\/span><\/p>\n<p id=\"ember101\" class=\"ember-view reader-text-block__paragraph\"><strong><span>K\u00e4ytetyt muuntajat<\/span><\/strong><span>\u00a0:<\/span><\/p>\n<ul>\n<li><strong><span>JsonFragmenter<\/span><\/strong><span>\u00a0: Purkaa vastauskent\u00e4n teko\u00e4lyn JSON-l\u00e4hd\u00f6st\u00e4.<\/span><\/li>\n<li><strong><span>FeatureWriter<\/span><\/strong><span>\u00a0: Tulostaa tulokset tiedostoon tai tietokantaan.<\/span><\/li>\n<\/ul>\n<p id=\"ember103\" class=\"ember-view reader-text-block__paragraph\"><span>FME:n avulla voit tulostaa tulokset JSON- tai CSV-muodossa tai jopa ty\u00f6nt\u00e4\u00e4 ne suoraan kojelaudoihin tai muihin alavirran j\u00e4rjestelmiin.<\/span><\/p>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember104\" class=\"ember-view reader-text-block__heading-3\"><span>Miksi k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 ty\u00f6nkulkua?<\/span><\/h3>\n<p id=\"ember105\" class=\"ember-view reader-text-block__paragraph\"><strong><span>FME:n vahvuudet<\/span><\/strong><span>\u00a0:<\/span><\/p>\n<ol>\n<li><strong><span>Yhdist\u00e4 ilman koodia<\/span><\/strong><span>\u00a0: Ty\u00f6skentele helposti PDF-tiedostojen, tietokantojen tai sovellusliittymien kanssa ilman koodia.<\/span><\/li>\n<li><strong><span>Joustavat tietokantavaihtoehdot<\/span><\/strong><span>\u00a0: Vaihda tietokantoja (esim. DuckDB PostgreSQL:\u00e4\u00e4n) v\u00e4h\u00e4ll\u00e4 vaivalla.<\/span><\/li>\n<li><strong><span>Saumaton API-integraatio<\/span><\/strong><span>\u00a0: Yhdist\u00e4 vaivattomasti sovellusliittymiin, kuten Ollaman REST-sovellusliittym\u00e4\u00e4n teko\u00e4lypohjaista k\u00e4sittely\u00e4 varten.<\/span><\/li>\n<\/ol>\n<p id=\"ember107\" class=\"ember-view reader-text-block__paragraph\"><strong><span>Ollaman edut<\/span><\/strong><span>\u00a0:<\/span><\/p>\n<ul>\n<li><strong><span>Paikalliset teko\u00e4lymallit<\/span><\/strong><span>\u00a0: Varmistaa tietojen yksityisyyden ja hallinnan.<\/span><\/li>\n<li><strong><span>REST API<\/span><\/strong><span>\u00a0: Yksinkertaistaa vektorien luomista ja kyselyit\u00e4.<\/span><\/li>\n<\/ul>\n<p id=\"ember109\" class=\"ember-view reader-text-block__paragraph\"><strong><span>DuckDB edut<\/span><\/strong><span>\u00a0:<\/span><\/p>\n<ul>\n<li><strong><span>Muistissa oleva suorituskyky<\/span><\/strong><span>\u00a0: Nopea k\u00e4sittely ja kyselyn suoritus.<\/span><\/li>\n<li><strong><span>SQL-yhteensopivuus<\/span><\/strong><span>\u00a0: Tuttu syntaksi helpottaa integrointia.<\/span><\/li>\n<li><strong><span>Asennusta ei tarvita<\/span><\/strong><span>\u00a0: Koska aiomme julkaista t\u00e4m\u00e4n FMEHubissa, t\u00e4m\u00e4 on kevyemp\u00e4\u00e4 kuin esimerkiksi Postgresin asentaminen.<\/span><\/li>\n<\/ul>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember111\" class=\"ember-view reader-text-block__heading-3\"><span>Seuraavat vaiheet: Ty\u00f6nkulun parantaminen<\/span><\/h3>\n<p id=\"ember112\" class=\"ember-view reader-text-block__paragraph\"><span>T\u00e4ss\u00e4 on muutamia tapoja rakentaa t\u00e4lle perustalle:<\/span><\/p>\n<ol>\n<li><strong><span>Laajenna tietol\u00e4hteit\u00e4<\/span><\/strong><span>\u00a0: Integroi reaaliaikaiset sovellusliittym\u00e4t, pilvitallennus, rasteridata tai verkkokaappaus. FME:ll\u00e4 kaikki tiedot ovat tavoitettavissa.<\/span><\/li>\n<li><strong><span>Paranna automaatiota<\/span><\/strong><span>\u00a0: Ota ty\u00f6nkulku k\u00e4ytt\u00f6\u00f6n FME-palvelimella aikataulutusta ja skaalautuvuutta varten.<\/span><\/li>\n<li><strong><span>Kokeile lis\u00e4asetuksia<\/span><\/strong><span>\u00a0: K\u00e4yt\u00e4 tarkempia malleja tai parametreja, kuten l\u00e4mp\u00f6tilaa, n\u00e4hd\u00e4ksesi, kuinka se vaikuttaa vastaukseen.<\/span><\/li>\n<li><strong><span>Vuorovaikutteiset tulokset<\/span><\/strong><span>\u00a0: Ty\u00f6nn\u00e4 tulokset kojelaudoille tai ilmoituksiin saadaksesi hy\u00f6dyllisi\u00e4 oivalluksia.<\/span><\/li>\n<\/ol>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<p id=\"ember114\" class=\"ember-view reader-text-block__paragraph\"><span>T\u00e4m\u00e4 ty\u00f6nkulku n\u00e4ytt\u00e4\u00e4, kuinka FME voi yksinkertaistaa RAG-ty\u00f6nkulkuja yhdist\u00e4m\u00e4ll\u00e4 asiakirjasi paikallisiin teko\u00e4lymalleihin, kuten Ollama. Pienell\u00e4 vaivalla voit rakentaa joustavia ja tehokkaita ratkaisuja, jotka on r\u00e4\u00e4t\u00e4l\u00f6ity tarpeisiisi. Jos olet kiinnostunut jatkamaan t\u00e4t\u00e4 l\u00e4hestymistapaa, ota rohkeasti yhteytt\u00e4 saadaksesi lis\u00e4tietoja!<\/span><\/p>\n[\/vc_column_text][\/vc_column][\/vc_row]","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221;&#8230;<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-17132","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>LLM RAG - Spatialworld Oy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LLM RAG - Spatialworld Oy\" \/>\n<meta property=\"og:description\" content=\"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221;...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Spatialworld Oy\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-05T15:35:10+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Arvioitu lukuaika\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minuuttia\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/\",\"url\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/\",\"name\":\"LLM RAG - Spatialworld Oy\",\"isPartOf\":{\"@id\":\"https:\/\/spatialworld.fi\/fi\/#website\"},\"datePublished\":\"2025-01-29T12:01:30+00:00\",\"dateModified\":\"2025-02-05T15:35:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/\"]]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/spatialworld.fi\/fi\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LLM RAG\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/spatialworld.fi\/fi\/#website\",\"url\":\"https:\/\/spatialworld.fi\/fi\/\",\"name\":\"Spatialworld Oy\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/spatialworld.fi\/fi\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fi\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LLM RAG - Spatialworld Oy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/","og_locale":"fi_FI","og_type":"article","og_title":"LLM RAG - Spatialworld Oy","og_description":"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221;...","og_url":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/","og_site_name":"Spatialworld Oy","article_modified_time":"2025-02-05T15:35:10+00:00","twitter_misc":{"Arvioitu lukuaika":"9 minuuttia"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/","url":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/","name":"LLM RAG - Spatialworld Oy","isPartOf":{"@id":"https:\/\/spatialworld.fi\/fi\/#website"},"datePublished":"2025-01-29T12:01:30+00:00","dateModified":"2025-02-05T15:35:10+00:00","breadcrumb":{"@id":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/"]]}]},{"@type":"BreadcrumbList","@id":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/spatialworld.fi\/fi\/"},{"@type":"ListItem","position":2,"name":"LLM RAG"}]},{"@type":"WebSite","@id":"https:\/\/spatialworld.fi\/fi\/#website","url":"https:\/\/spatialworld.fi\/fi\/","name":"Spatialworld Oy","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/spatialworld.fi\/fi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fi"}]}},"_links":{"self":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages\/17132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/comments?post=17132"}],"version-history":[{"count":8,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages\/17132\/revisions"}],"predecessor-version":[{"id":17310,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages\/17132\/revisions\/17310"}],"wp:attachment":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/media?parent=17132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}