FalkorDB 통합
FalkorDB 통합
LangChain과 함께 FalkorDB의 초고속 그래프 데이터베이스를 사용해 Cypher로 지식 그래프에 자연어 질의를 수행하는 방법을 알아봅니다.
@falkordb/langchain-ts 패키지는 개발자가 LangChain 애플리케이션과 함께 FalkorDB의 초고속 그래프 데이터베이스를 사용할 수 있게 합니다. 즉, 애플리케이션이 자연어 질문을 받아 해당 Cypher 질의를 자동으로 생성하고, 그래프 데이터베이스에서 관련 컨텍스트를 가져와 평이한 언어로 응답을 반환할 수 있게 됩니다. 전체 변환 계층이 알아서 처리됩니다.
패키지는 기존 LangChain 워크플로에 맞춰지므로, 이미 다른 AI 기능을 위해 그 프레임워크를 사용 중이라면 이것이 스택의 또 다른 도구가 됩니다. FalkorDB의 저지연 특성과 LangChain의 언어 모델 통합이 결합되어 빠른 응답을 제공합니다.
FalkorDB에 대하여
생성형 AI, 에이전트 메모리, 클라우드 보안, 사기 탐지를 지원하는 초고속, 멀티테넌트 그래프 데이터베이스입니다. FalkorDB는 그래프의 인접 행렬을 표현하기 위해 희소 행렬(sparse matrix)을 활용하고 질의를 위해 선형 대수를 활용하는 최초의 질의 가능한 Property Graph Database입니다.
출처: 문서
본문
설치
npm install @falkordb/langchain-ts falkordb
LangChain과 언어 모델도 필요합니다:
npm install langchain @langchain/openai
빠른 시작(Quick start)
1. FalkorDB 시작
FalkorDB를 실행하는 가장 쉬운 방법은 Docker입니다:
docker run -p 6379:6379 -it --rm falkordb/falkordb:latest
2. 기본 사용법
@langchain/community패키지는 더 이상 유지 관리되지 않습니다.@langchain/community에서 import하는 예시는 구식이거나 깨졌을 수 있습니다. 주의해서 사용하세요.
import { FalkorDBGraph } from "@falkordb/langchain-ts";
import { ChatOpenAI } from "@langchain/openai";
import { GraphCypherQAChain } from "@langchain/community/chains/graph_qa/cypher";
// 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 reference
FalkorDBGraph
initialize(config: FalkorDBGraphConfig): Promise<FalkorDBGraph>
새 FalkorDB 연결을 만들고 초기화합니다.
구성 옵션:
host(string, 선택): 데이터베이스 호스트. 기본값:"localhost"port(number, 선택): 데이터베이스 포트. 기본값:6379graph(string, 선택): 사용할 그래프 이름url(string, 선택): 대체 연결 URL 형식enhancedSchema(boolean, 선택): 향상된 스키마 세부 정보 활성화. 기본값:false
예시:
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();
고급 사용법(Advanced usage)
커스텀 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);
요구 사항(Requirements)
- Node.js 18 이상
- FalkorDB 서버 실행 중(Redis 호환)
- LangChain 0.1.0 이상
예시(Examples)
더 많은 예시는 GitHub의 @falkordb/langchain-ts 저장소를 참조하세요.
라이선스(License)
MIT
지원(Support)
더 알아보기 (Learn more)
- 이 문서를 MCP로 연결하면 Claude, VSCode 등에서 실시간 답변을 받을 수 있어요.
- GitHub에서 이 페이지 편집하기 또는 이슈 제출하기.