LangChain、ベクトルストアとメモリストアにXata連携を追加
本文の状態
日本語全文を表示中
詳細モードで約9分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
LangChain Blog
LangChain は Xata とのコラボレーションにより、ベクトルストアおよびメモリストアとしての統合機能を公開し、PostgreSQL と Elasticsearch の両方の利点を活用した AI アプリケーション開発を可能にした。
AI深層分析を開く2026年8月27日 01:57
AI深層分析
キーポイント
Xata の技術的基盤と特徴
Xata は PostgreSQL をソース・オブ・トゥルースとし、自動的に Elasticsearch に複製することで、ACID トランザクションや結合機能と BM25 検索、ベクトル検索を単一のサーバーレス API で提供する。
LangChain への統合発表
LangChain は過去数週間で 4 つの Xata 統合をリポジトリにマージし、Xata をベクトルストアおよびメモリストアとして利用可能な公式機能として公開した。
実装事例と Q&A チャットボット
記事では、Xata データベースをベクトルストアとして、会話履歴をメモリストアとして活用し、情報に基づいて回答する Q&A チャットボットの構築方法をコード例と共に示している。
Xata の LangChain 統合機能
Xata は Python と JavaScript 両方の LangChain でベクトルストアおよびメモリストアとして利用可能であり、メタデータによるフィルタリングに対応している。
会話型 Q&A アプリケーションの実装例
本記事では Xata をベクトルストアとメモリストアの両方に使用し、追跡質問を可能にする「データをチャットする」ユースケースの複雑な実装例を示している。
重要な引用
It stores the source-of-truth data in PostgreSQL, but also replicates it automatically to Elasticsearch.
This means that it offers functionality from both Postgres (ACID transactions, joins, constraints, etc.) and from Elasticsearch (BM25 full-text search, vector search, hybrid search), behind the same simple serverless API.
The four integrations already make Xata one of the most comprehensive data solutions for LangChain, and we're just getting started!
While each LangChain integration comes with at least one minimal code example, in this blog post we'll look at a more complex example that uses Xata both as a vector store and as a memory store.
編集コメントを表示
編集コメント
PostgreSQL と Elasticsearch の強みを統合する Xata のアプローチは、複雑なインフラ構成を簡素化し、開発者の負担を減らす有効な手段となる。特に LangChain との連携により、RAG パターンや長期メモリ管理の実装がさらに容易になることが期待される。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。

*編集者の注:本記事は、Xata チームとの共同執筆です。彼らの新しい統合機能に興奮しており、Q&A チャットボットの構築における実装の詳細な解説を大変楽しんで読ませてもらいました。
ここ数週間で、LangChain リポジトリへ 4 つの Xata 統合機能を追加しました。本日、これらを Xata のローンチウィーク の一部として発表できることを嬉しく思います。本記事では、まず Xata とは何か、そしてなぜ AI アプリケーションにとって理想的なデータコンパニオンと言えるのかを簡単に解説します。さらに、Xata データベース(ベクトルストアとして)の情報を基に質問に応答し、かつ長期記憶を Xata(メモリス tore として)に保存する Q&A チャットボットの構築例も紹介します。
Xata とは何か
Xata は PostgreSQL を基盤としたデータベースプラットフォームです。信頼性の高いデータ(ソース・オブ・トゥルース)を PostgreSQL に保存しつつ、自動的に Elasticsearch へ複製します。これにより、PostgreSQL が持つ ACID トランザクションや結合処理、制約条件などの機能と、Elasticsearch の BM25 全文検索、ベクトル検索、ハイブリッド検索といった機能が、シンプルなサーバーレス API の背後で統合されています。これは多くの AI アプリケーションに必要な機能を網羅しており、PostgreSQL と Elasticsearch を基盤としているため、信頼性とスケーラビリティに優れています。
Xata は TypeScript/JavaScript および Python 向けのクライアント SDK を提供しており、GitHub、Vercel、Netlify などのプラットフォームとの組み込み統合も用意されています。
AI の分野では、今回発表された LangChain への統合に加え、「ChatGPT on your data」ユースケース向けに OpenAI との深い連携機能を提供しています。
利用可能な統合
本日現在、以下の統合が利用可能です:
LangChain において、Xata をベクトルストアとして利用できるようになりました。これにより、埋め込み付きのドキュメントを Xata テーブルに保存し、ベクトル検索を実行することが可能になります。本統合では、最新 GA 版となった Python SDK の機能を最大限に活用しており、メタデータによるフィルタリングにも対応しています。Xata ではパフォーマンス最大化のため、このフィルタリング条件はカラムとして表現されます。
また、TypeScript/JavaScript アプリケーション向けには、LangChain.js における Xata ベクトルストアとしての統合も提供されています。Python 版と同様の機能を持ちながら、JS エコシステムで利用可能です。
さらに、Xata は LangChain のメモリストアとしても機能します。これにより、AI チャットセッションのメッセージ履歴を Xata に保存し、LLM アプリケーションにとっての「記憶」として活用できます。メッセージは以下のように保存されます。
同様に、LangChain.js においても Xata をメモリストアとして利用可能です。Python 版と同様の仕組みで、TypeScript/JavaScript 環境に対応しています。
上記の各統合ページには、1〜2 つのコード例が用意されています。
すでに4つの統合により、Xata は LangChain 向けの最も包括的なデータソリューションの一つとなっていますが、私たちはまだ始まったばかりです。近い将来には、Xata のキーワード検索およびハイブリッド検索用のカスタムリトリーバーと、Xata Ask AI エンドポイントの追加を予定しています。
例:メモリを活用した会話型 Q&A
各 LangChain 統合には少なくとも1つの最小限のコード例が付属していますが、本ブログでは Xata をベクトルストアとメモリストアの両方として活用する、より複雑な事例を取り上げます。このアプリケーションは「データとのチャット」というユースケースを実装しており、追加の質問にも対応可能です。完全なコードはこの リポジトリ で確認できますが、LangChain と Xata を組み合わせたアプリケーションの開発を始める際のスタートキットとしてもご利用いただけます。
ここで紹介するサンプルアプリケーションは TypeScript で記述されていますが、Python 版の LangChain を使用した同様の例については、こちらの Jupyter notebook でもご覧いただけます。
コードの主要部分は以下の通りです:
import * as dotenv from "dotenv";
import { XataVectorSearch } from "langchain/vectorstores/xata";
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
import { Document } from "langchain/document";
import { ConversationalRetrievalQAChain } from "langchain/chains";
import { BufferMemory } from "langchain/memory";
import { XataChatMessageHistory } from "langchain/stores/message/xata";
import { ChatOpenAI } from "langchain/chat_models/openai";
import { getXataClient } from "./xata.ts";
dotenv.config();
const client = getXataClient();
/* Create the vector store */
const table = "docs";
const embeddings = new OpenAIEmbeddings();
const vectorStore = new XataVectorSearch(embeddings, { client, table });
/* Add documents to the vector store */
const docs = [
new Document({
pageContent: "Xata is a Serverless Data platform based on PostgreSQL",
}),
new Document({
pageContent:
"Xata offers a built-in vector type that can be used to store and query vectors",
}),
new Document({
pageContent: "Xata includes similarity search",
}),
];
const ids = await vectorStore.addDocuments(docs);
// eslint-disable-next-line no-promise-executor-return
await new Promise((r) => setTimeout(r, 2000));
/* Create the chat memory store */
const memory = new BufferMemory({
chatHistory: new XataChatMessageHistory({
table: "memory",
sessionId: new Date().toISOString(), // Or some other unique identifier for the conversation
client,
createTable: false,
}),
memoryKey: "chat_history",
});
/* Initialize the LLM to use to answer the question */
const model = new ChatOpenAI({});
/* Create the chain */
const chain = ConversationalRetrievalQAChain.fromLLM(
model,
vectorStore.asRetriever(),
{
memory,
}
);
/* Ask it a question */
const question = "What is Xata?";
const res = await chain.call({ question });
console.log("Question: ", question);
console.log(res);
/* Ask it a follow up question */
const followUpQ = "Can it do vector search?";
const followUpRes = await chain.call({
question: followUpQ,
});
console.log("Follow-up question: ", followUpQ);
console.log(followUpRes);
/* Clear both the vector store and the memory store */
await vectorStore.delete({ ids });
await memory.clear();では、このコードを一つずつ見ていきましょう。
まず、ベクトルストアとして Xata を使用します。このベクトルストアにはいくつかのサンプルドキュメントをインデックス化しますが、実際のアプリケーションでは数万件のドキュメントをインデックスすることも可能です。これらは、チャットボットがユーザーの質問に対する回答を見つけるために使用するドキュメントです。ここでは明示されていませんが、これらのドキュメントにカスタムメタデータ列を追加することもできます。詳細な例については、統合ページをご覧ください。
/* Create the vector store */
const table = "docs";
const embeddings = new OpenAIEmbeddings();
const vectorStore = new XataVectorSearch(embeddings, { client, table });
/* Add documents to the vector store */
const docs = [
new Document({
pageContent: "Xata is a Serverless Data platform based on PostgreSQL",
}),
new Document({
pageContent:
"Xata offers a built-in vector type that can be used to store and query vectors",
}),
new Document({
pageContent: "Xata includes similarity search",
}),
];
const ids = await vectorStore.addDocuments(docs);次に、Xata を基盤としたチャットメモリストアを作成します。これは、チャットボットとユーザー間で交わされたメッセージを Xata のテーブルに保存する仕組みです。各会話にはセッション ID が割り当てられ、これを用いて過去のメッセージを取得することで、文脈が失われることを防ぎます。
/* Create the chat memory store */
const memory = new BufferMemory({
chatHistory: new XataChatMessageHistory({
table: "memory",
sessionId: new Date().toISOString(), // Or some other unique identifier for the conversation
client,
createTable: false,
}),
memoryKey: "chat_history",
});その後、モデルへの問い合わせを行うためのクライアントを初期化します。ここでは OpenAI の ChatGPT API を使用します。
/* Initialize the LLM to use to answer the question */
const model = new ChatOpenAI({});最後に、これらすべてを会話型 QA チェーンに統合します。
# コードブロックのプレースホルダー:
/* Create the chain */
const chain = ConversationalRetrievalQAChain.fromLLM(
model,
vectorStore.asRetriever(),
{
memory,
}
);
例を実行中にXataのUIでデータを確認すると、docsとmemoryという2つのテーブルが表示されます。
docs テーブルには、ベクトルストアから取得したドキュメントが格納され、content カラムが含まれています。
ベクトル型の embedding カラム: (原文の技術表記: vector)

memory テーブルには、ユーザーと AI の間の質問と回答が記録されます。

コンテンツハッカソン
ローンチウィークの一環として、Xata ではコンテンツハッカソンも開催しています。アプリ開発やブログ記事の執筆、動画の制作などを通じて、賞品やグッズを獲得できるチャンスです。詳細は ローンチウィークのブログ記事 をご覧ください。
Xata と LangChain の連携についてご質問がある場合、アイデアをお持ちの場合、あるいは実装でサポートが必要な場合は、Discord にご参加いただくか、Twitter でご連絡ください。
関連コンテンツ

パートナー
スケールするエージェントコマース:LangChain エージェントが安全に取引を行う




S. Tangedipalli、
K. Singh、
N. Okoroafor、
M. Samhitha Vangara、
C. Shriyan
2026 年 8 月 17 日
10 分

パートナー
エージェントの呼び出しのうち、実際に最先端モデルを必要とするものはどれくらいあるのか?


S. Tangedipalli、
K. Singh
2026年8月11日
11 分
.png)
パートナー
金融サービスにおけるエージェント型AIのROIを実証する


K. シンガー、
D. テッパー
2026 年 7 月 17 日
14 分
エージェントが実際に何をしているかを確認する
LangSmith は、エージェントエンジニアリングを支援するプラットフォームです。開発者はこれを使って、すべてのエージェントの判断をデバッグしたり、変更の評価を行ったり、ワンクリックでデプロイしたりできます。
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み