Skip to main content

TypeORM

为了在通用的PostgreSQL数据库中实现向量搜索,LangChainJS支持使用TypeORMpgvector Postgres扩展。

设置

要使用TypeORM,您需要安装typeormpg软件包:

npm install typeorm

npm install pg

使用docker-compose设置pgvector自托管实例

pgvector提供了一个预构建的Docker镜像,可用于快速设置自托管的Postgres实例。 创建一个名为docker-compose.yml的文件:

import DockerExample from "!!raw-loader!@examples/indexes/vector_stores/typeorm_vectorstore/docker-compose.example.yml";

<CodeBlock language="yml" name="docker-compose.yml">{DockerExample}</CodeBlock>

然后在相同的目录下运行docker compose up来启动容器。

您可以在官方存储库中找到有关如何设置pgvector的更多信息。

用法

使用TypeORMVectorStore的一个完整的示例如下:

import { DataSourceOptions } from "typeorm";
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
import { TypeORMVectorStore } from "langchain/vectorstores/typeorm";

// First, follow set-up instructions at
// https://js.langchain.com/docs/modules/indexes/vector_stores/integrations/typeorm

export const run = async () => {
const args = {
postgresConnectionOptions: {
type: "postgres",
host: "localhost",
port: 5432,
username: "myuser",
password: "ChangeMe",
database: "api",
} as DataSourceOptions,
};

const typeormVectorStore = await TypeORMVectorStore.fromDataSource(
new OpenAIEmbeddings(),
args
);

await typeormVectorStore.ensureTableInDatabase();

await typeormVectorStore.addDocuments([
{ pageContent: "what's this", metadata: { a: 2 } },
{ pageContent: "Cat drinks milk", metadata: { a: 1 } },
]);

const results = await typeormVectorStore.similaritySearch("hello", 2);

console.log(results);
};