Setting up
이 가이드를 진행하려면 Docker와 Python 3.x가 설치되어 있어야 합니다. 처음으로 Memgraph Platform (Memgraph 데이터베이스 + MAGE 라이브러리 + Memgraph Lab)을 빠르게 실행하려면 다음을 수행하세요: Linux/MacOS에서:memgraph-mage와 memgraph-lab Docker 서비스를 빌드하고 시작하는 스크립트를 실행합니다. 이제 Memgraph가 실행 중입니다! 설치 프로세스에 대한 자세한 내용은 Memgraph 문서를 참조하세요.
LangChain을 사용하려면 필요한 모든 패키지를 설치하고 import하세요. 적절한 권한을 보장하기 위해 패키지 매니저 pip와 --user 플래그를 사용합니다. Python 3.4 이상 버전을 설치했다면 pip는 기본적으로 포함되어 있습니다. 다음 명령을 사용하여 필요한 모든 패키지를 설치할 수 있습니다:
Natural language querying
Memgraph의 LangChain 통합에는 자연어 쿼리가 포함됩니다. 이를 활용하려면 먼저 필요한 모든 import를 수행하세요. 코드에 나타나는 대로 설명하겠습니다. 먼저MemgraphGraph를 인스턴스화하세요. 이 객체는 실행 중인 Memgraph 인스턴스에 대한 연결을 보유합니다. 모든 환경 변수를 올바르게 설정해야 합니다.
refresh_schema는 데이터베이스에 아직 데이터가 없고 불필요한 데이터베이스 호출을 피하고자 하기 때문에 초기에 False로 설정됩니다.
Populating the database
데이터베이스를 채우려면 먼저 비어 있는지 확인하세요. 가장 효율적인 방법은 인메모리 분석 스토리지 모드로 전환하고, 그래프를 삭제한 다음 인메모리 트랜잭션 모드로 돌아가는 것입니다. Memgraph의 스토리지 모드에 대해 자세히 알아보세요. 데이터베이스에 추가할 데이터는 다양한 플랫폼에서 사용 가능한 여러 장르의 비디오 게임과 퍼블리셔에 관한 것입니다.graph 객체가 query 메서드를 보유하고 있는 것을 주목하세요. 이 메서드는 Memgraph에서 쿼리를 실행하며 MemgraphQAChain에서도 데이터베이스를 쿼리하는 데 사용됩니다.
Refresh graph schema
Memgraph에 새로운 데이터가 생성되었으므로 스키마를 새로 고쳐야 합니다. 생성된 스키마는MemgraphQAChain이 LLM에게 더 나은 Cypher 쿼리를 생성하도록 지시하는 데 사용됩니다.
Querying the database
OpenAI API와 상호 작용하려면 API 키를 환경 변수로 구성해야 합니다. 이는 요청에 대한 적절한 권한을 보장합니다. API 키 획득에 대한 자세한 정보는 여기에서 찾을 수 있습니다. API 키를 구성하려면 Python os 패키지를 사용할 수 있습니다:MemgraphQAChain을 생성하세요. temperature parameter는 예측 가능하고 일관된 답변을 보장하기 위해 0으로 설정됩니다. 쿼리 생성에 관한 더 자세한 메시지를 받으려면 verbose 매개변수를 True로 설정할 수 있습니다.
Chain modifiers
체인의 동작을 수정하고 더 많은 컨텍스트나 추가 정보를 얻으려면 체인의 매개변수를 수정할 수 있습니다.Return direct query results
return_direct 수정자는 실행된 Cypher 쿼리의 직접 결과를 반환할지 또는 처리된 자연어 응답을 반환할지를 지정합니다.
Return query intermediate steps
return_intermediate_steps 체인 수정자는 초기 쿼리 결과에 더하여 쿼리의 중간 단계를 포함하여 반환된 응답을 향상시킵니다.
Limit the number of query results
top_k 수정자는 쿼리 결과의 최대 개수를 제한하고자 할 때 사용할 수 있습니다.
Advanced querying
솔루션의 복잡성이 증가함에 따라 신중한 처리가 필요한 다양한 사용 사례를 접할 수 있습니다. 애플리케이션의 확장성을 보장하는 것은 원활한 사용자 흐름을 유지하는 데 필수적입니다. 체인을 다시 인스턴스화하고 사용자가 잠재적으로 물어볼 수 있는 몇 가지 질문을 시도해 봅시다.Prompt refinement
이를 해결하기 위해 QA 체인의 초기 Cypher 프롬프트를 조정할 수 있습니다. 이는 사용자가 특정 플랫폼(예: PS5)을 참조하는 방법에 대한 지침을 LLM에 추가하는 것을 포함합니다. LangChain PromptTemplate을 사용하여 수정된 초기 프롬프트를 생성합니다. 이 수정된 프롬프트는 개선된MemgraphQAChain 인스턴스에 인수로 제공됩니다.
Constructing knowledge graph
비구조화된 데이터를 구조화된 데이터로 변환하는 것은 쉽거나 간단한 작업이 아닙니다. 이 가이드는 LLM을 활용하여 이를 돕는 방법과 Memgraph에서 지식 그래프를 구축하는 방법을 보여줍니다. 지식 그래프가 생성되면 GraphRAG 애플리케이션에 사용할 수 있습니다. 텍스트로부터 지식 그래프를 구축하는 단계는 다음과 같습니다:- 텍스트에서 구조화된 정보 추출하기: LLM을 사용하여 텍스트에서 노드와 관계 형태의 구조화된 그래프 정보를 추출합니다.
- Memgraph에 저장하기: 추출된 구조화된 그래프 정보를 Memgraph에 저장합니다.
Extracting structured information from text
설정 섹션의 모든 import 외에도 텍스트에서 구조화된 정보를 추출하는 데 사용될LLMGraphTransformer와 Document를 import하세요.
LLMGraphTransformer를 초기화하고 문서를 그래프 구조로 변환하는 것입니다.
Storing into Memgraph
GraphDocument 형식, 즉 노드와 관계 형식으로 데이터가 준비되면 add_graph_documents 메서드를 사용하여 Memgraph로 가져올 수 있습니다. 이 메서드는 graph_documents 목록을 Memgraph에서 실행해야 하는 적절한 Cypher 쿼리로 변환합니다. 완료되면 지식 그래프가 Memgraph에 저장됩니다.
그래프 구축 프로세스는 비결정적입니다. 비구조화된 데이터에서 노드와 관계를 생성하는 데 사용되는 LLM이 비결정적이기 때문입니다.
Additional options
또한 요구 사항에 따라 추출할 특정 유형의 노드와 관계를 정의할 수 있는 유연성이 있습니다.__Entity__ 레이블을 가질 수도 있습니다.
include_source를 True로 설정하면 소스 문서가 저장되고 MENTIONS 관계를 사용하여 그래프의 노드에 연결됩니다.
id가 없었기 때문에 id 속성이 생성되는 것을 주목하세요.
__Entity__ 레이블과 문서 소스를 모두 가질 수 있습니다. 그러나 특히 콘텐츠의 긴 문자열로 인해 소스가 포함된 경우 둘 다 메모리를 차지한다는 점에 유의하세요.
마지막으로 이전 섹션에서 설명한 대로 지식 그래프를 쿼리할 수 있습니다:
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.