Skip to main content

AnalyticDB

AnalyticDB for PostgreSQL 是一种大规模并行处理(MPP)数据仓库服务,专为在线分析大量数据而设计。

AnalyticDB for PostgreSQL 是基于开源 Greenplum Database 项目开发的,并由 阿里云 进行了深度扩展。AnalyticDB for PostgreSQL 兼容 ANSI SQL 2003 语法以及 PostgreSQL 和 Oracle 数据库生态系统。AnalyticDB for PostgreSQL 还支持行存储和列存储。AnalyticDB for PostgreSQL 可以在离线环境下高性能地处理 PB 级数据,并支持高并发的在线查询。

本笔记本展示了如何使用与 AnalyticDB 向量数据库相关的功能。

要运行本示例,您需要已经启动并运行了一个 AnalyticDB 实例:

兼容性

该功能仅适用于 Node.js。

安装配置

LangChain.js 使用 node-postgres 作为 AnalyticDB 向量数据库的连接池。

npm install -S pg

我们还需要 pg-copy-streams 来快速批量添加向量。

npm install -S pg-copy-streams

:::提示 请参阅安装集成包的一般说明部分。 :::

npm install @langchain/openai @langchain/community @langchain/core

使用方法

安全提示

不应将用户名等用户生成的数据用作集合名称的输入。
这可能导致 SQL 注入!

import { AnalyticDBVectorStore } from "@langchain/community/vectorstores/analyticdb";
import { OpenAIEmbeddings } from "@langchain/openai";

const connectionOptions = {
host: process.env.ANALYTICDB_HOST || "localhost",
port: Number(process.env.ANALYTICDB_PORT) || 5432,
database: process.env.ANALYTICDB_DATABASE || "your_database",
user: process.env.ANALYTICDB_USERNAME || "username",
password: process.env.ANALYTICDB_PASSWORD || "password",
};

const vectorStore = await AnalyticDBVectorStore.fromTexts(
["foo", "bar", "baz"],
[{ page: 1 }, { page: 2 }, { page: 3 }],
new OpenAIEmbeddings(),
{ connectionOptions }
);
const result = await vectorStore.similaritySearch("foo", 1);
console.log(JSON.stringify(result));
// [{"pageContent":"foo","metadata":{"page":1}}]

await vectorStore.addDocuments([{ pageContent: "foo", metadata: { page: 4 } }]);

const filterResult = await vectorStore.similaritySearch("foo", 1, {
page: 4,
});
console.log(JSON.stringify(filterResult));
// [{"pageContent":"foo","metadata":{"page":4}}]

const filterWithScoreResult = await vectorStore.similaritySearchWithScore(
"foo",
1,
{ page: 3 }
);
console.log(JSON.stringify(filterWithScoreResult));
// [[{"pageContent":"baz","metadata":{"page":3}},0.26075905561447144]]

const filterNoMatchResult = await vectorStore.similaritySearchWithScore(
"foo",
1,
{ page: 5 }
);
console.log(JSON.stringify(filterNoMatchResult));
// []

// need to manually close the Connection pool
await vectorStore.end();

API Reference:

相关内容


Was this page helpful?


You can also leave detailed feedback on GitHub.