1. はじめに
この Codelab では、マネー ロンダリング防止(AML)と金融詐欺を検出するグラフ検索拡張生成(GraphRAG)ソリューションを構築します。Vertex AI、ベクトル検索、BigQuery のネイティブ グラフ機能を LangChain 経由で連携して使用します。このラボを修了すると、大規模言語モデル(LLM)がセマンティック監査ログと複雑なトランザクション ネットワークを合成して不正な資金の流れを特定する方法を理解できます。
GraphRAG アーキテクチャ フロー
+------------------+ 1. Vector Search +---------------------+
| User Prompt / | ------------------------> | BigQuery ML |
| Investigation | | (AccountAudits) |
+------------------+ +---------------------+
| |
| | 2. Seed Entity ID
v v
+------------------+ 3. GQL Traversal +---------------------+
| LangChain | <------------------------ | BigQuery Property |
| Graph Retriever | | Graph (FinGraph) |
+------------------+ +---------------------+
|
| 4. Synthesized Context
v
+------------------+
| Gemini 2.5 Flash | ---> Detailed Fraud Report
+------------------+
演習内容
- フェーズ 1: データセットとプロパティ グラフの設定: 関係型財務テーブルを作成し、ネイティブの BigQuery
PROPERTY GRAPHを構築します。 - フェーズ 2: セマンティック ベクトル エンベディングの生成:
AI.GENERATE_EMBEDDING(text-embedding-005)を使用して、監査ログの SQL でテキスト エンベディングを直接生成します。 - フェーズ 3: カスタム LangChain GraphRAG Retriever: ベクトル類似度(
COSINE_DISTANCE)と ISO GQL パス走査を組み合わせたカスタム Python リトリーバーを構築します。 - フェーズ 4: LLM による不正行為の理由とトレイルの可視化: Gemini の推論チェーンを実行して、不正なマネー ロンダリング ループを検出し、BigQuery Studio でパス トレイルを可視化します。
必要なもの
- ウェブブラウザ(Chrome など)。
- 課金を有効にした Google Cloud プロジェクト
この Codelab は、初心者を含むあらゆるレベルのデベロッパー、データ エンジニア、AI 実務担当者を対象としています。
推定所要時間: 35 分
推定費用: 2.00 米ドル未満(従量課金制の Vertex AI と BigQuery クエリ処理を使用)。
2. 始める前に
Google Cloud プロジェクトの作成
- Google Cloud コンソールで、Google Cloud プロジェクトを選択または作成します。
- Cloud プロジェクトで課金が有効になっていることを確認します。
Cloud Shell の起動
- Google Cloud コンソールの上部にある [Cloud Shell をアクティブにする] をクリックします。
- 認証を確認します。
gcloud auth list
- Cloud Shell で環境変数を構成します。
export GCP_PROJECT=$(gcloud config get-value project)
export REGION="us-central1"
export BQ_DATASET="fingraph_rag"
gcloud config set project $GCP_PROJECT
API を有効にする
次のコマンドを実行して、必要な API をすべて有効にします。
gcloud services enable \
bigquery.googleapis.com \
aiplatform.googleapis.com
3. セットアップと初期化
このステップでは、Python 環境を設定し、必要なライブラリをインストールして、BigQuery と Vertex AI のクライアントを初期化します。これらのコマンドは、Cloud Shell または Jupyter ノートブック環境で実行できます。
- Python 仮想環境を作成してアクティブにします。
python3 -m venv venv
source venv/bin/activate
- 必要な Python パッケージをインストールします。
pip install langchain-google-vertexai langchain-core google-cloud-bigquery vertexai
- Python ファイル
graphrag_aml.pyを作成し、初期化コードを追加します。は、実際の Google Cloud プロジェクト ID に置き換えます。
import vertexai
from google.cloud import bigquery
# Configuration
GCP_PROJECT_ID = "<YOUR_PROJECT_ID>"
REGION = "us-central1"
BQ_DATASET_ID = "fingraph_rag"
MODEL_NAME = "gemini-2.5-flash"
# Initialize clients
bq_client = bigquery.Client(project=GCP_PROJECT_ID)
vertexai.init(project=GCP_PROJECT_ID, location=REGION)
4. テーブルとスキーマを作成する
次に、BigQuery データセットと標準テーブルを作成して、Financial Graph のスキーマを定義します。
- BigQuery データセットを作成します。
bq mk --location=US --dataset fingraph_rag
- テーブルを作成します。これは、BigQuery Studio UI または Cloud Shell で実行できます。SQL は次のとおりです。
CREATE TABLE IF NOT EXISTS `fingraph_rag.Account` (id INT64, create_time TIMESTAMP, is_blocked BOOL, type STRING);
CREATE TABLE IF NOT EXISTS `fingraph_rag.Loan` (id INT64, loan_amount FLOAT64, balance FLOAT64, create_time TIMESTAMP, interest_rate FLOAT64);
CREATE TABLE IF NOT EXISTS `fingraph_rag.Person` (id INT64, name STRING);
CREATE TABLE IF NOT EXISTS `fingraph_rag.AccountRepayLoan` (id INT64, loan_id INT64, amount FLOAT64, create_time TIMESTAMP);
CREATE TABLE IF NOT EXISTS `fingraph_rag.AccountTransferAccount` (id INT64, to_id INT64, amount FLOAT64, create_time TIMESTAMP);
CREATE TABLE IF NOT EXISTS `fingraph_rag.PersonOwnAccount` (id INT64, account_id INT64, create_time TIMESTAMP);
CREATE TABLE IF NOT EXISTS `fingraph_rag.AccountAudits` (id INT64, audit_timestamp TIMESTAMP, audit_details STRING, embedding ARRAY<FLOAT64>);
5. データセットを挿入する
次に、エンティティとその関係を挿入して、資金の流れを形成します。このデータセットは、Doe(シェル企業所有者の疑いがある)、Jacoby(仲介者)、Menville(KYC に失敗したターゲット)、Smith(無関係の傍観者)間の不審なアクティビティを表しています。
次の SQL を実行してテーブルにデータを入力します。
INSERT INTO `fingraph_rag.Account` VALUES
(10,'2020-01-10 06:22:20.222',false,'brokerage account'),
(20,'2020-01-27 17:55:09.206',false,'checking account'),
(30,'2020-02-15 09:12:33.111',false,'savings account'),
(40,'2019-11-05 14:33:10.000',false,'business account');
INSERT INTO `fingraph_rag.Loan` VALUES
(100,2022278.5,123359.0,'2020-03-18 16:42:57.719',0.064),
(200,50000.0,45000.0,'2020-03-23 19:03:05.567',0.097),
(300, 15000.0, 10000.0, '2020-05-10 10:00:00.000', 0.05);
INSERT INTO `fingraph_rag.Person` VALUES
(1,'Jacoby'), (2,'Menville'), (3,'Smith'), (4,'Doe');
INSERT INTO `fingraph_rag.AccountTransferAccount` VALUES
(40,10,25000.0,'2020-08-01 10:00:00.000'),
(10,20,24000.0,'2020-08-29 15:28:58.647'),
(30,20,150.0,'2020-09-01 12:00:00.000');
INSERT INTO `fingraph_rag.AccountRepayLoan` VALUES
(10,100,56809.8,'2020-12-12 07:25:02.597'),
(20,200,20000.0,'2021-01-18 01:40:25.317');
INSERT INTO `fingraph_rag.PersonOwnAccount` VALUES
(1,10,'2020-01-10 06:22:20.222'), (2,20,'2020-01-27 17:55:09.206'),
(3,30,'2020-02-15 09:12:33.111'), (4,40,'2019-11-05 14:33:10.000');
INSERT INTO `fingraph_rag.AccountAudits` (id, audit_timestamp, audit_details) VALUES
(10, '2020-05-14 06:57:02', 'Account 10 (Jacoby) flagged by AML system for suspicious high-volume transfers from offshore business accounts.'),
(20, '2021-03-09 02:51:45', 'Account 20 (Menville) failed KYC verification. Linked source of funds is unverified and customer is unresponsive.'),
(40, '2020-07-20 09:00:00', 'Account 40 (Doe) under investigation as a suspected shell company involved in illicit activities.');
取り込まれたレコードを確認する
次のクエリを実行して、財務テーブルのレコード数を検証します。
SELECT 'Account' AS entity_table, COUNT(*) AS row_count FROM `fingraph_rag.Account`
UNION ALL SELECT 'Loan', COUNT(*) FROM `fingraph_rag.Loan`
UNION ALL SELECT 'Person', COUNT(*) FROM `fingraph_rag.Person`
UNION ALL SELECT 'AccountAudits', COUNT(*) FROM `fingraph_rag.AccountAudits`;
次のような行挿入を確認するクエリ出力が表示されます。

6. BigQuery プロパティ グラフを作成する
リレーショナル データが配置されたら、BigQuery のネイティブ グラフ DDL を使用して FinGraph を定義します。これにより、データをコピーまたは複製することなく、既存のリレーショナル テーブルの上にセマンティック レイヤが作成されます。
ISO GQL 構文の概要
BigQuery プロパティ グラフは、標準の ISO Graph Query Language(GQL)パターンを使用します。
(node:Label)はエンティティ ノード(Account、Person、Loanなど)を定義します。-[edge:LABEL]->は、有向関係(Transfers、Repays、Ownsなど)を定義します。
次の SQL ステートメントを実行して、プロパティ グラフを作成します。
CREATE OR REPLACE PROPERTY GRAPH `fingraph_rag.FinGraph`
NODE TABLES (
`fingraph_rag.Account` KEY (id) LABEL Account PROPERTIES (id, type, is_blocked),
`fingraph_rag.Loan` KEY (id) LABEL Loan PROPERTIES (id, loan_amount, balance),
`fingraph_rag.Person` KEY (id) LABEL Person PROPERTIES (id, name)
)
EDGE TABLES(
`fingraph_rag.AccountRepayLoan`
KEY (id, loan_id, create_time)
SOURCE KEY (id) REFERENCES `fingraph_rag.Account` (id)
DESTINATION KEY (loan_id) REFERENCES `fingraph_rag.Loan` (id)
LABEL Repays PROPERTIES (amount, create_time),
`fingraph_rag.AccountTransferAccount`
KEY (id, to_id, create_time)
SOURCE KEY (id) REFERENCES `fingraph_rag.Account` (id)
DESTINATION KEY (to_id) REFERENCES `fingraph_rag.Account` (id)
LABEL Transfers PROPERTIES (amount, create_time),
`fingraph_rag.PersonOwnAccount`
KEY (id, account_id)
SOURCE KEY (id) REFERENCES `fingraph_rag.Person` (id)
DESTINATION KEY (account_id) REFERENCES `fingraph_rag.Account` (id)
LABEL Owns PROPERTIES (create_time)
);
アカウント、人物、ローンのグラフ全体を可視化するには、BigQuery Studio で次の SQL クエリを実行します。
GRAPH `fingraph_rag.FinGraph`
MATCH (src)-[e]->(dst)
RETURN TO_JSON([
TO_JSON(src),
TO_JSON(e),
TO_JSON(dst)
]) AS result;
次のようなグラフの可視化結果が表示されます。

7. 監査ログのエンベディングを生成する
RAG パイプラインのベクトル検索部分を有効にするため、AI.GENERATE_EMBEDDING テーブル値関数(TVF)を使用して、BigQuery 内で非構造化監査ログのテキスト エンベディングを直接生成します。
BigQuery リモート接続を作成して IAM 権限を付与する
BigQuery ML では、Vertex AI エンベディング エンドポイントと安全に通信するために CLOUD_RESOURCE 接続が必要です。Cloud Shell で次の bash コマンドを実行して、接続を作成し、自動生成されたサービス アカウントを検出し、Vertex AI ユーザー(roles/aiplatform.user)ロールを付与します。
# 1. Set environment variables
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION="us"
export CONNECTION_ID="vertex_ai_conn"
# 2. Create the BigQuery Cloud Resource Connection
bq mk --connection \
--location=${LOCATION} \
--project_id=${PROJECT_ID} \
--connection_type=CLOUD_RESOURCE \
${CONNECTION_ID}
# 3. Retrieve the auto-generated Service Account ID associated with the connection
SA_ID=$(bq show --format=json --location=${LOCATION} --connection ${CONNECTION_ID} | jq -r '.cloudResource.serviceAccountId')
echo "Connection Service Account: ${SA_ID}"
# 4. Grant Vertex AI User (roles/aiplatform.user) permission to the Service Account
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_ID}" \
--role="roles/aiplatform.user" \
--condition=None
リモート エンベディング モデルを作成する
次に、新しく承認された接続を介して Vertex AI の text-embedding-005 モデルにリンクする BigQuery ML リモートモデルを定義します。
CREATE OR REPLACE MODEL `fingraph_rag.embedding_model`
REMOTE WITH CONNECTION `us.vertex_ai_conn`
OPTIONS(ENDPOINT = 'text-embedding-005');
エンベディングを生成する
次に、UPDATE ステートメントの FROM 句で AI.GENERATE_EMBEDDING を呼び出して、AccountAudits テーブルのエンベディングを生成します。
UPDATE `fingraph_rag.AccountAudits` target
SET embedding = source.embedding
FROM AI.GENERATE_EMBEDDING(
MODEL `fingraph_rag.embedding_model`,
(SELECT id, audit_details AS content FROM `fingraph_rag.AccountAudits` WHERE ARRAY_LENGTH(embedding) = 0)
) source
WHERE target.id = source.id;
生成されたベクトル ディメンションを確認する
次のクエリを実行して、ベクトル エンベディングが入力されたことを確認します。
SELECT id, audit_details, ARRAY_LENGTH(embedding) AS embedding_dim
FROM `fingraph_rag.AccountAudits`;
次のような 768 次元のベクトル エンベディングを示すクエリ出力が表示されます。

8. GraphRAG Retriever を定義する
次に、Python 環境でカスタム LangChain リトリーバーを作成します。このリトリーバーは、セマンティック ベクトル検索(関連する開始点を見つけるため)とネイティブ グラフ MATCH クエリ(関係をトラバースするため)を組み合わせます。
Python スクリプト graphrag_aml.py に次のコードを追加します。
from langchain_core.documents import Document
from langchain_core.retrievers import BaseRetriever
from typing import List
class FinGraphRetriever(BaseRetriever):
project: str
dataset: str
def _get_relevant_documents(self, query: str) -> List[Document]:
# 1. Vector Search
vector_query = f"""
SELECT id, audit_details
FROM `{self.dataset}.AccountAudits`
ORDER BY COSINE_DISTANCE(
embedding,
(
SELECT embedding
FROM AI.GENERATE_EMBEDDING(
MODEL `{self.dataset}.embedding_model`,
(SELECT @query AS content)
)
)
)
LIMIT 1
"""
res = bq_client.query(vector_query, job_config=bigquery.QueryJobConfig(
query_parameters=[bigquery.ScalarQueryParameter("query", "STRING", query)]
)).result()
start_id = None
audit_text = ""
for row in res:
start_id = row.id
audit_text = row.audit_details
if not start_id: return []
# 2. Native Graph Traversal
graph_query = f"""
GRAPH `{self.dataset}.FinGraph`
MATCH
(sender_person:Person)-[:Owns]->(sender_acc:Account)
-[tx:Transfers]->
(a:Account)
-[repays:Repays]->(l:Loan),
(owner:Person)-[:Owns]->(a)
WHERE a.id = @id
RETURN
owner.name as owner_name,
a.type as account_type,
sender_person.name as sender_name,
tx.amount as transfer_amount,
repays.amount as repayment_amount,
l.id as loan_id
"""
graph_res = bq_client.query(graph_query, job_config=bigquery.QueryJobConfig(
query_parameters=[bigquery.ScalarQueryParameter("id", "INT64", start_id)]
)).result()
context_docs = [Document(page_content=f"Primary Audit Log (Target Account): {audit_text}")]
sender_names = []
for row in graph_res:
sender_names.append(row['sender_name'])
doc_str = (f"Account Owner: {row['owner_name']} (Account Type: {row['account_type']}). "
f"Received transfer of ${row['transfer_amount']} from {row['sender_name']}. "
f"Made loan repayment of ${row['repayment_amount']} to Loan {row['loan_id']}.")
context_docs.append(Document(page_content=doc_str))
if sender_names:
names_list = "','".join(sender_names)
sender_audit_query = f"""
SELECT p.name, au.audit_details
FROM `{self.dataset}.AccountAudits` au
JOIN `{self.dataset}.Account` a ON au.id = a.id
JOIN `{self.dataset}.PersonOwnAccount` poa ON a.id = poa.account_id
JOIN `{self.dataset}.Person` p ON poa.id = p.id
WHERE p.name IN ('{names_list}')
"""
sender_audits = bq_client.query(sender_audit_query).result()
for row in sender_audits:
context_docs.append(Document(page_content=f"Audit Log for Sender {row['name']}: {row['audit_details']}"))
return context_docs
9. 不正行為の調査を実行する
最後に、GraphRAG パイプラインを実行して、不正行為に関する詳細なレポートを生成します。LLM は、カスタム グラフ リトリーバーによって取得されたコンテキストを使用してプロンプトに回答します。
次のコードをスクリプト graphrag_aml.py に追加し、python graphrag_aml.py を使用して実行します。
from langchain_google_vertexai import ChatVertexAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# Initialize the LLM and the Retriever
llm = ChatVertexAI(model_name=MODEL_NAME)
retriever = FinGraphRetriever(project=GCP_PROJECT_ID, dataset=BQ_DATASET_ID)
# Define the Prompt
prompt = ChatPromptTemplate.from_template("""
You are a Lead Fraud Analyst. Use the following audit logs and graph transaction history to answer the question.
Your goal is to connect the dots between the entities and explain the flow of funds.
If you see transfers from flagged users or shell companies, highlight the money laundering risk.
Context: {context}
Question: {question}
Detailed Fraud Report:
""")
# Create the LangChain
chain = (
{"context": retriever , "question": lambda x: x}
| prompt
| llm
| StrOutputParser()
)
# Execute the chain
question = "Why is Menville's loan repayment at risk? Flag any suspicious activity if you notice."
print(chain.invoke(question))
graphrag_aml.py スクリプトを完了
参考までに、完成した graphrag_aml.py スクリプトは次のようになります。
import vertexai
from google.cloud import bigquery
from langchain_core.documents import Document
from langchain_core.retrievers import BaseRetriever
from typing import List
from langchain_google_vertexai import ChatVertexAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# Configuration
GCP_PROJECT_ID = "<YOUR_PROJECT_ID>"
REGION = "us-central1"
BQ_DATASET_ID = "fingraph_rag"
MODEL_NAME = "gemini-2.5-flash"
# Initialize clients
bq_client = bigquery.Client(project=GCP_PROJECT_ID)
vertexai.init(project=GCP_PROJECT_ID, location=REGION)
class FinGraphRetriever(BaseRetriever):
project: str
dataset: str
def _get_relevant_documents(self, query: str) -> List[Document]:
# 1. Vector Search using Cosine Distance
vector_query = f"""
SELECT id, audit_details
FROM `{self.dataset}.AccountAudits`
ORDER BY COSINE_DISTANCE(
embedding,
(
SELECT embedding
FROM AI.GENERATE_EMBEDDING(
MODEL `{self.dataset}.embedding_model`,
(SELECT @query AS content)
)
)
)
LIMIT 1
"""
res = bq_client.query(vector_query, job_config=bigquery.QueryJobConfig(
query_parameters=[bigquery.ScalarQueryParameter("query", "STRING", query)]
)).result()
start_id = None
audit_text = ""
for row in res:
start_id = row.id
audit_text = row.audit_details
if not start_id: return []
# 2. Native Graph Traversal (GQL MATCH)
graph_query = f"""
GRAPH `{self.dataset}.FinGraph`
MATCH
(sender_person:Person)-[:Owns]->(sender_acc:Account)
-[tx:Transfers]->
(a:Account)
-[repays:Repays]->(l:Loan),
(owner:Person)-[:Owns]->(a)
WHERE a.id = @id
RETURN
owner.name as owner_name,
a.type as account_type,
sender_person.name as sender_name,
tx.amount as transfer_amount,
repays.amount as repayment_amount,
l.id as loan_id
"""
graph_res = bq_client.query(graph_query, job_config=bigquery.QueryJobConfig(
query_parameters=[bigquery.ScalarQueryParameter("id", "INT64", start_id)]
)).result()
context_docs = [Document(page_content=f"Primary Audit Log (Target Account): {audit_text}")]
sender_names = []
for row in graph_res:
sender_names.append(row['sender_name'])
doc_str = (f"Account Owner: {row['owner_name']} (Account Type: {row['account_type']}). "
f"Received transfer of ${row['transfer_amount']} from {row['sender_name']}. "
f"Made loan repayment of ${row['repayment_amount']} to Loan {row['loan_id']}.")
context_docs.append(Document(page_content=doc_str))
if sender_names:
names_list = "','".join(sender_names)
sender_audit_query = f"""
SELECT p.name, au.audit_details
FROM `{self.dataset}.AccountAudits` au
JOIN `{self.dataset}.Account` a ON au.id = a.id
JOIN `{self.dataset}.PersonOwnAccount` poa ON a.id = poa.account_id
JOIN `{self.dataset}.Person` p ON poa.id = p.id
WHERE p.name IN ('{names_list}')
"""
sender_audits = bq_client.query(sender_audit_query).result()
for row in sender_audits:
context_docs.append(Document(page_content=f"Audit Log for Sender {row['name']}: {row['audit_details']}"))
return context_docs
# Initialize LLM & Retriever
llm = ChatVertexAI(model_name=MODEL_NAME)
retriever = FinGraphRetriever(project=GCP_PROJECT_ID, dataset=BQ_DATASET_ID)
prompt = ChatPromptTemplate.from_template("""
You are a Lead Fraud Analyst. Use the following audit logs and graph transaction history to answer the question.
Your goal is to connect the dots between the entities and explain the flow of funds.
If you see transfers from flagged users or shell companies, highlight the money laundering risk.
Context: {context}
Question: {question}
Detailed Fraud Report:
""")
chain = (
{"context": retriever, "question": lambda x: x}
| prompt
| llm
| StrOutputParser()
)
question = "Why is Menville's loan repayment at risk? Flag any suspicious activity if you notice."
print(chain.invoke(question))
次のような LLM 分析レポートが表示されます。

10. マネー ロンダリングの経路を可視化する
プログラムで検出したマネー ロンダリングの追跡を視覚的に理解するには、BigQuery Studio コンソールでグラフ可視化クエリを実行します。
このクエリを BigQuery Studio で実行します。(グラフの可視化機能を有効にするか、グラフタブが利用可能な場合はグラフタブをクリックしてください)。
GRAPH `fingraph_rag.FinGraph`
MATCH
(p_shell:Person)-[o1:Owns]->(acc_shell:Account)-[t1:Transfers]->(acc_fraud:Account)-[t2:Transfers]->(acc_target:Account)-[r:Repays]->(l:Loan),
(p_fraud:Person)-[o2:Owns]->(acc_fraud),
(p_target:Person)-[o3:Owns]->(acc_target)
WHERE p_target.name = 'Menville' AND p_fraud.name = 'Jacoby' AND p_shell.name = 'Doe'
RETURN TO_JSON([
TO_JSON(p_shell), TO_JSON(o1), TO_JSON(acc_shell),
TO_JSON(t1), TO_JSON(acc_fraud), TO_JSON(p_fraud), TO_JSON(o2),
TO_JSON(t2), TO_JSON(acc_target), TO_JSON(p_target), TO_JSON(o3),
TO_JSON(r), TO_JSON(l)
]) AS result;
この GQL クエリは、疑わしいペーパー カンパニーの所有者(Doe)から仲介者(Jacoby)、最終的なターゲット(Menville)、Loan の返済までのパス全体をトレースします。
次のようなグラフの可視化結果が表示されます。

11. クリーンアップ
Google Cloud アカウントに継続的に課金されないようにするには、この Codelab で作成したリソースを削除します。
BigQuery データセットと Cloud リソース接続を削除します。
# Delete the BigQuery dataset
bq rm -r -f $PROJECT_ID:fingraph_rag
# Delete the BigQuery Cloud Resource Connection
bq rm --connection --location=us vertex_ai_conn
リソースが削除されたことを確認します。
bq ls --project_id $PROJECT_ID
bq ls --connection --location=us
12. 完了
おめでとうございます!RAG アプリケーションを構築し、その動作を分析しました。BigQuery のネイティブのグラフ機能とベクトル検索機能を使用して GraphRAG を実行し、ETL を行わずにマネー ロンダリングのスキームを検出する方法を示しました。
学習した内容
- 標準テーブルの上に BigQuery でプロパティ グラフを構築する方法
- BigQuery ML を使用してベクトル エンベディングを生成して保存する方法
- BigQuery Graph トラバーサルとベクトル検索を LangChain Retriever に統合する方法
- LLM がグラフ トポロジを使用してセマンティック監査ログを合成し、偽陽性を減らす方法
次のステップ
- BigQuery プロパティ グラフの概要を確認する
- BigQuery Graph Query Language(GQL)のパターンをさらに試してみる。