以编程方式使用文档

FalkorDB LangChain JS/TS integration

@falkordb/langchain-ts 包使开发者能够将 FalkorDB 的超快速图数据库与其 LangChain 应用程序结合使用。这意味着在实践中,您的应用程序现在可以接收自然语言问题,自动生成相应的 Cypher 查询,从图数据库中提取相关上下文,并以通俗语言返回响应。整个翻译层会为您自动处理。

该包可以融入现有的 LangChain 工作流程,因此如果您已经在将该框架用于其他 AI 功能,这将成为您技术栈中的另一个工具。FalkorDB 的低延迟特性与 LangChain 的语言模型集成相结合,可提供快速响应。

关于 FalkorDB

一个超快速、多租户的 **图数据库** 为生成式 AI、代理记忆、云安全和欺诈检测提供支持。 FalkorDB 是第一个利用稀疏矩阵表示图的邻接矩阵并使用线性代数进行查询的可查询属性图数据库。

安装

npm install @falkordb/langchain-ts falkordb

您还需要 LangChain 和一个语言模型:

npm install langchain @langchain/openai

快速开始

1. 启动 FalkorDB

运行 FalkorDB 最简单的方式是使用 Docker:

docker run -p 6379:6379 -it --rm falkordb/falkordb:latest

2. 基本用法

// Initialize FalkorDB connection
const graph = await FalkorDBGraph.initialize({
  host: "localhost",
  port: 6379,
  graph: "movies" // Your graph name
});

// Set up the language model
const model = new ChatOpenAI({ temperature: 0 });

// Create and populate the graph with some data
await graph.query(
  "CREATE (a:Actor {name:'Bruce Willis'})" +
  "-[:ACTED_IN]->(:Movie {title: 'Pulp Fiction'})"
);

// Refresh the graph schema
await graph.refreshSchema();

// Create a graph QA chain
const chain = GraphCypherQAChain.fromLLM({
  llm: model,
  graph: graph as any, // Type assertion for LangChain compatibility
});

// Ask questions about your graph
const response = await chain.run("Who played in Pulp Fiction?");
console.log(response);
// Output: Bruce Willis played in Pulp Fiction.

// Clean up
await graph.close();

API 参考

FalkorDBGraph

initialize(config: FalkorDBGraphConfig): Promise

创建并初始化一个新的 FalkorDB 连接。

配置选项:

  • - host (字符串,可选):数据库主机。默认值: "localhost"
  • - port (数字,可选):数据库端口。默认值: 6379
  • - graph (字符串,可选):要使用的图名称
  • - url (字符串,可选):替代连接 URL 格式
  • - enhancedSchema (布尔值,可选):启用增强的架构详情。默认值: false

Example:

const graph = await FalkorDBGraph.initialize({
  host: "localhost",
  port: 6379,
  graph: "myGraph",
  enhancedSchema: true
});

query(query: string): Promise<any>

在图上执行 Cypher 查询。

const result = await graph.query(
  "MATCH (n:Person) RETURN n.name LIMIT 10"
);

refreshSchema(): Promise<void>

更新图的架构信息。

await graph.refreshSchema();
console.log(graph.getSchema());

getSchema(): string

以格式化字符串形式返回当前图的架构。

getStructuredSchema(): StructuredSchema

返回包含节点属性、关系属性和关系的结构化架构对象。

close(): Promise<void>

关闭数据库连接。

await graph.close();

高级用法

自定义 Cypher 查询

const graph = await FalkorDBGraph.initialize({
  host: "localhost",
  port: 6379,
  graph: "movies"
});

// Complex query
const result = await graph.query(`
  MATCH (a:Actor)-[:ACTED_IN]->(m:Movie)
  WHERE m.year > 2000
  RETURN a.name, m.title, m.year
  ORDER BY m.year DESC
  LIMIT 10
`);

console.log(result.data);

多个查询

await graph.executeQueries([
  "CREATE (p:Person {name: 'Alice'})",
  "CREATE (p:Person {name: 'Bob'})",
  "MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}) CREATE (a)-[:KNOWS]->(b)"
]);

使用架构

await graph.refreshSchema();

// Get formatted schema
const schema = graph.getSchema();
console.log(schema);

// Get structured schema
const structuredSchema = graph.getStructuredSchema();
console.log(structuredSchema.nodeProps);
console.log(structuredSchema.relationships);

要求

  • - Node.js >= 18
  • - 运行 FalkorDB 服务器(与 Redis 兼容)
  • - LangChain >= 0.1.0

示例

更多示例,请参阅 @falkordb/langchain-ts repository 在 GitHub 上。

许可证

MIT

支持