{"id":494,"date":"2026-09-24T20:00:00","date_gmt":"2026-09-24T18:00:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=494"},"modified":"2026-09-10T10:52:53","modified_gmt":"2026-09-10T08:52:53","slug":"budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/","title":{"rendered":"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">Standardowe du\u017ce modele j\u0119zykowe (LLM) cz\u0119sto wykazuj\u0105 tendencj\u0119 do halucynacji i posiadaj\u0105 nieaktualn\u0105 wiedz\u0119, gdy s\u0105 odpytywane o wewn\u0119trzne instrukcje firmowe, dedykowane bazy danych czy specjalistyczn\u0105 dokumentacj\u0119 techniczn\u0105. Generowanie wspomagane wyszukiwaniem (Retrieval-Augmented Generation \u2013 RAG) eliminuje te ograniczenia, osadzaj\u0105c proces generowania odpowiedzi w zweryfikowanym, specyficznym dla przedsi\u0119biorstwa repozytorium wiedzy. Wdro\u017cenie bezserwerowej architektury RAG z wykorzystaniem mechanizmu Google Cloud Vertex AI Embeddings oraz BigQuery Vector Search umo\u017cliwia skalowalne wyszukiwanie semantyczne w milionach fragment\u00f3w dokument\u00f3w bez konieczno\u015bci utrzymywania odr\u0119bnej infrastruktury baz danych wektorowych.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. Architektura rozwi\u0105zania: Bezserwerowy RAG w Google Cloud<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Profesjonalny potok RAG w Google Cloud rozdziela przetwarzanie dokument\u00f3w, indeksowanie semantyczne i generowanie odpowiedzi na trzy zarz\u0105dzane us\u0142ugi:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Pozyskiwanie danych i podzia\u0142 (Chunking):<\/strong> Surowe podr\u0119czniki PDF, strony intranetowe oraz ustrukturyzowane tabele baz danych s\u0105 wgrywane do Google Cloud Storage (GCS) i dzielone na semantyczne fragmenty (chunki) po 500\u20131000 token\u00f3w z 10-procentowym nak\u0142adaniem.<\/li>\r\n<li><strong>Indeksowanie wektorowe BigQuery ML:<\/strong> Fragmenty s\u0105 przechowywane w tabelach BigQuery, gdzie modele osadzania Vertex AI (np. <code>text-embedding-004<\/code> lub <code>text-multilingual-embedding-002<\/code>) generuj\u0105 wysokowymiarowe wektory bezpo\u015brednio za pomoc\u0105 polece\u0144 SQL.<\/li>\r\n<li><strong>Osadzanie fakt\u00f3w w Vertex AI Gemini:<\/strong> W momencie wp\u0142yni\u0119cia zapytania, us\u0142uga BigQuery Vector Search wykonuje wyszukiwanie przybli\u017conych najbli\u017cszych s\u0105siad\u00f3w (ANN), aby pobra\u0107 najbardziej trafne fragmenty tekstu, kt\u00f3re nast\u0119pnie s\u0105 wstrzykiwane jako merytoryczny kontekst do monitu modelu Gemini.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-rag-pl.png\" width=\"1120\" height=\"630\" alt=\"Dwa tory: g\u00f3rny buduje indeks wektorowy raz, dolny odpowiada na ka\u017cde pytanie przez wyszukiwanie wektorowe i ugruntowany prompt Gemini\">\n<figcaption>Indeksowanie i odpowiadanie to dwa osobne zadania po\u0142\u0105czone jednym artefaktem: indeks wektorowy powstaje raz i jest czytany przy ka\u017cdym pytaniu \u2014 to trzyma odpowiedzi przy \u017ar\u00f3d\u0142ach, a koszty w ryzach.<\/figcaption>\n<\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">2. Generowanie wektor\u00f3w w BigQuery ML krok po kroku<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Aby generowa\u0107 osadzenia wektorowe bez eksportowania danych do zewn\u0119trznych skrypt\u00f3w Python, nale\u017cy skonfigurowa\u0107 zdalne po\u0142\u0105czenie z modelem Vertex AI wewn\u0105trz BigQuery. Poni\u017cszy skrypt SQL \u0142\u0105czy model osadzania i przekszta\u0142ca tabel\u0119 z surowymi fragmentami dokument\u00f3w w zaindeksowane wektorowo repozytorium wiedzy:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code class=\"language-sql\">-- 1. Utworzenie zdalnego po\u0142\u0105czenia z punktem ko\u0144cowym Vertex AI Embedding\nCREATE OR REPLACE MODEL `enterprise_kb.vertex_embed_model`\nREMOTE WITH CONNECTION `us-central1.vertex_ai_connection`\nOPTIONS (\n    ENDPOINT = 'text-embedding-004'\n);\n\n-- 2. Wygenerowanie osadze\u0144 wektorowych dla surowych fragment\u00f3w dokument\u00f3w\nCREATE OR REPLACE TABLE `enterprise_kb.document_embeddings` AS\nSELECT\n    doc_id,\n    chunk_id,\n    content_text,\n    source_url,\n    ml_generate_embedding_result AS content_embedding\nFROM\n    ML.GENERATE_EMBEDDING(\n        MODEL `enterprise_kb.vertex_embed_model`,\n        TABLE `enterprise_kb.raw_document_chunks`,\n        STRUCT(TRUE AS flatten_json_output)\n    )\nWHERE\n    content_text IS NOT NULL;<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Indeksowanie wektorowe i wyszukiwanie semantyczne krok po kroku<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">W celu zapewnienia b\u0142yskawicznego czasu odpowiedzi w du\u017cych zbiorach dokument\u00f3w, na kolumnie wektorowej nale\u017cy utworzy\u0107 indeks IVF (Inverted File) przed uruchomieniem zapyta\u0144 o podobie\u0144stwo semantyczne:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code class=\"language-sql\">-- 1. Utworzenie indeksu IVF (Approximate Nearest Neighbor)\nCREATE VECTOR INDEX `kb_semantic_index`\nON `enterprise_kb.document_embeddings`(content_embedding)\nOPTIONS (\n    index_type = 'IVF',\n    distance_type = 'COSINE',\n    ivf_options = '{\"num_lists\": 1000}'\n);\n\n-- 2. Wykonanie wyszukiwania wektorowego w celu pobrania 3 najbardziej trafnych fragment\u00f3w\nSELECT\n    base.doc_id,\n    base.chunk_id,\n    base.content_text,\n    base.source_url,\n    distance AS cosine_distance\nFROM\n    VECTOR_SEARCH(\n        TABLE `enterprise_kb.document_embeddings`,\n        'content_embedding',\n        (\n            SELECT ml_generate_embedding_result AS content_embedding\n            FROM ML.GENERATE_EMBEDDING(\n                MODEL `enterprise_kb.vertex_embed_model`,\n                (SELECT 'Jakie s\u0105 zasady eskalacji SLA podczas krytycznych awarii serwer\u00f3w?' AS content_text),\n                STRUCT(TRUE AS flatten_json_output)\n            )\n        ),\n        top_k =&gt; 3,\n        distance_type =&gt; 'COSINE'\n    )\nORDER BY distance ASC;<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">4. Potok generowania RAG z modelem Gemini krok po kroku<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Po pobraniu odpowiednich fragment\u00f3w kontekstu za po\u015brednictwem BigQuery Vector Search, ustrukturyzowany monit jest sk\u0142adany i przekazywany do interfejsu API Vertex AI Gemini za pomoc\u0105 j\u0119zyka Python:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code class=\"language-python\">from google.cloud import bigquery\nimport vertexai\nfrom vertexai.generative_models import GenerativeModel\n\n# Inicjalizacja klient\u00f3w Google Cloud\nbq_client = bigquery.Client(project='enterprise-ai-project')\nvertexai.init(project='enterprise-ai-project', location='us-central1')\n\ndef answer_query_with_rag(user_question):\n    \"\"\"Wykonuje wyszukiwanie wektorowe BigQuery i osadza odpowiedzi Gemini w faktach.\"\"\"\n    \n    # Pobranie 3 najbardziej trafnych semantycznie fragment\u00f3w z BigQuery\n    search_query = f\"\"\"\n        SELECT base.content_text, base.source_url\n        FROM VECTOR_SEARCH(\n            TABLE `enterprise_kb.document_embeddings`,\n            'content_embedding',\n            (\n                SELECT ml_generate_embedding_result AS content_embedding\n                FROM ML.GENERATE_EMBEDDING(\n                    MODEL `enterprise_kb.vertex_embed_model`,\n                    (SELECT @question AS content_text),\n                    STRUCT(TRUE AS flatten_json_output)\n                )\n            ),\n            top_k =&gt; 3,\n            distance_type =&gt; 'COSINE'\n        )\n    \"\"\"\n    \n    job_config = bigquery.QueryJobConfig(\n        query_parameters=[bigquery.ScalarQueryParameter(\"question\", \"STRING\", user_question)]\n    )\n    results = bq_client.query(search_query, job_config=job_config).result()\n    \n    # Sformatowanie pobranych fragment\u00f3w w blok kontekstowy\n    context_block = \"\\n---\\n\".join([f\"\u0179r\u00f3d\u0142o ({row.source_url}): {row.content_text}\" for row in results])\n    \n    # Zbudowanie rygorystycznego monitu RAG\n    rag_prompt = f\"\"\"Jeste\u015b autorytatywnym asystentem technicznym w firmie.\nOdpowiedz na pytanie WY\u0141\u0104CZNIE w oparciu o fakty podane w poni\u017cszym Kontek\u015bcie.\nJe\u015bli odpowiedzi nie mo\u017cna ustali\u0107 na podstawie Kontekstu, poinformuj wyra\u017anie, \u017ce informacja jest niedost\u0119pna.\n\nKontekst:\n{context_block}\n\nPytanie:\n{user_question}\n\"\"\"\n\n    model = GenerativeModel(\"gemini-1.5-pro\")\n    response = model.generate_content(rag_prompt)\n    return response.text\n\nif __name__ == '__main__':\n    output = answer_query_with_rag(\"Jakie s\u0105 zasady eskalacji SLA podczas krytycznych awarii serwer\u00f3w?\")\n    print(output)<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">5. Podsumowanie i warto\u015b\u0107 architektoniczna<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Co da si\u0119 osi\u0105gn\u0105\u0107 dzi\u0119ki temu poradnikowi:<\/strong> Wdro\u017cenie bezserwerowej, wysoce skalowalnej bazy wiedzy RAG przy u\u017cyciu mechanizm\u00f3w osadzania Google Cloud Vertex AI, indeksowania wektorowego BigQuery ML oraz generowania opartego na faktach w modelu Gemini.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Wynikaj\u0105ca z tego warto\u015b\u0107:<\/strong> Specjalistyczne pytania dotycz\u0105ce wewn\u0119trznej dokumentacji firmowej, podr\u0119cznik\u00f3w i baz danych uzyskuj\u0105 precyzyjne odpowiedzi poparte rzetelnymi przypisami \u017ar\u00f3d\u0142owymi. Zjawisko halucynacji sztucznej inteligencji zostaje wyeliminowane poprzez rygorystyczne powi\u0105zanie generowanych tre\u015bci ze sprawdzonymi danymi organizacji. Ponadto realizacja indeksowania i wyszukiwania wektorowego bezpo\u015brednio w BigQuery eliminuje potrzeb\u0119 utrzymywania kosztownych, dedykowanych klastr\u00f3w baz wektorowych przy zachowaniu najwy\u017cszych standard\u00f3w bezpiecze\u0144stwa danych oraz uprawnie\u0144 IAM.<\/p>\r\n\n\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.cloud.google.com\/gemini-enterprise-agent-platform\/models\/grounding\/ground-responses-using-rag\" target=\"_blank\" rel=\"noopener noreferrer\">Ground responses using RAG (Vertex AI)<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery documentation<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Techniczny przewodnik krok po kroku po budowie bezserwerowej bazy wiedzy RAG przy u\u017cyciu BigQuery Vector Search i modelu Vertex AI Gemini.<\/p>\n","protected":false},"author":1,"featured_media":14054,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92640],"tags":[92343,92084,92103,92346,92238,92403],"class_list":["post-494","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-cloud-ai-pl","tag-artificial-intelligence-pl","tag-bigquery-pl","tag-google-cloud-pl","tag-llm-pl","tag-tutorial-pl","tag-vertex-ai-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery - Lukas Wojcik - Blog<\/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:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Techniczny przewodnik krok po kroku po budowie bezserwerowej bazy wiedzy RAG przy u\u017cyciu BigQuery Vector Search i modelu Vertex AI Gemini.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-24T18:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery\",\"datePublished\":\"2026-09-24T18:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/\"},\"wordCount\":537,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png\",\"keywords\":[\"Artificial Intelligence\",\"BigQuery\",\"Google Cloud\",\"LLM\",\"Tutorial\",\"Vertex AI\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/\",\"name\":\"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png\",\"datePublished\":\"2026-09-24T18:00:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png\",\"width\":1200,\"height\":630,\"caption\":\"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/cloud-ai-pl\\\/tutorials-pl-cloud-ai-pl\\\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery - Lukas Wojcik - Blog","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:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/","og_locale":"en_US","og_type":"article","og_title":"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery - Lukas Wojcik - Blog","og_description":"Techniczny przewodnik krok po kroku po budowie bezserwerowej bazy wiedzy RAG przy u\u017cyciu BigQuery Vector Search i modelu Vertex AI Gemini.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-24T18:00:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery","datePublished":"2026-09-24T18:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/"},"wordCount":537,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png","keywords":["Artificial Intelligence","BigQuery","Google Cloud","LLM","Tutorial","Vertex AI"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/","name":"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png","datePublished":"2026-09-24T18:00:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-494-budowa-bazy-wiedzy-rag-google-cloud--g.png","width":1200,"height":630,"caption":"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/cloud-ai-pl\/tutorials-pl-cloud-ai-pl\/budowa-bazy-wiedzy-rag-z-google-cloud-vertex-ai-i-bigquery\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Budowa bazy wiedzy RAG z Google Cloud Vertex AI i BigQuery"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=494"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/494\/revisions"}],"predecessor-version":[{"id":17960,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/494\/revisions\/17960"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14054"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}