inflearn logo
강의

講義

知識共有

graphRAG - Neo4Jで実装する知識グラフベースのRAGシステム (feat. LangChain)

graphRAGの実装 (LangChain LCELの活用)

쿼리문 질문 드립니다.

85

kimsc

投稿した質問数 70

0

"graphRAG 구현 (랭체인 LCEL 활용)" 부분입니다.

WHERE ANY(title IN $movie_titles WHERE movie.title CONTAINS title)

부분을 아래와 같이 수정
WHERE movie.title IN $movie_titles

수정한 이후에 건수가 제대로 나오질 않았습니다. ( 참고 $movie_titles 는 4건인데

최총 추출되는 것은 2건입니다.)

단순히 생각하면 title 이 추출된 title 에 포함되어 있는 movie 만 추출하면 될 거 같은데..제대로 동작하지 않네요...왜 그런지 설명 부탁드립니다.

WHERE 절 안에 다시 WHERE 절이 있는 것도 잘 모르겠습니다.

감사합니다.

dbms/rdbms neo4j llm langchain rag 카카오공채-개발

回答 3

1

kimsc

친절한 답변 감사드립니다.

1

pdstudio

안녕하세요. 판다스 스튜디오입니다.

좋은 질문 감사드립니다.

 

두 쿼리의 차이는 매칭 방식에 있습니다. WHERE ANY(title IN $movie_titles WHERE movie.title CONTAINS title) 쿼리는 부분 문자열을 포함하는지 확인합니다. 예를 들면, "Matrix"가 "The Matrix"에 포함되면 매칭됩니다.

반면, WHERE movie.title IN $movie_titles 쿼리는 정확히 일치하는 조건을 나타냅니다. 따라서, "Matrix"와 "The Matrix"는 다른 문자열이므로 매칭되지 않습니다.

 

그리고, ANY(title IN $movie_titles WHERE movie.title CONTAINS title) 구문은 Cypher의 리스트 축약 문법입니다. $movie_titles 리스트의 각 title에 대해 movie.title CONTAINS title 조건을 확인하고 하나라도 참이면 전체가 참이 됩니다. (부분 문자열 매칭)

 

GraphRAG에서는 LLM이 영화 제목을 정확히 추출하지 못할 수 있으므로, CONTAINS를 사용한 부분 매칭이 더 유연하고 실용적인 방법입니다.

 

감사합니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 내일은 한걸음 더 나아갈거야님.

질문해주신 부분에 대해 답변 드리겠습니다. 여러분의 코드와 관련하여 WHERE 절의 사용이 결과에 영향을 미치는 이유를 이해하는 것은 매우 중요합니다.

  1. ANY와 CONTAINS의 사용:

    • ANY(title IN $movie_titles WHERE movie.title CONTAINS title)는 $movie_titles 리스트 안의 어떤 요소라도 현재 movie.title 속에 포함되는지를 묻는 조건입니다. 즉, 각 영화 제목이 주어진 리스트 안의 어떤 부분 문자열이라도 포함하고 있는지를 찾는데 유용합니다.
  2. IN 연산자의 사용:

    • 반면, WHERE movie.title IN $movie_titlesmovie.title이 정확하게 $movie_titles 리스트의 요소와 일치하는 경우만 찾습니다. 이는 리스트 안의 요소들과 완전한 일치만을 조건으로 하기 때문에, CONTAINS를 사용하는 것과는 다르게 작동합니다.

이러한 차이점은 CONTAINS가 부분 문자열 비교를 허용한다는 데 있습니다. 따라서 CONTAINS를 사용하면 더 많은 결과를 검색하게 되고, 영화 제목이 제공된 리스트의 한 부분이라도 포함되어 있는 모든 레코드를 반환할 수 있습니다. 반면, IN 연산자는 입력된 제목과 정확하게 일치하는 것을 찾으므로, 부분 문자열이 아닌 경우 결과가 나오지 않을 수 있습니다.

또한, 이 설명과 관련하여 추가적으로 네오4제이(Neo4j)와 랭체인을 활용한 데이터 쿼리 방법에 대한 다양한 조언이 포함된 관련 질문을 참고해 주시면 다양한 사례에 대한 심도 있는 정보를 얻을 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

무료할당량 사용하는데 문제가 생겼습니다.

0

10

1

Sequence 관련 질문

1

17

2

Image Only Query

1

18

2

섹션2-11 내용중 tool_call

0

21

2

max token을 제한하는게 왜 성능을 개선하게 되는걸까요?

0

29

2

뉴스 데이터 전처리 실습 파일 부재

0

51

3

강의 github 어디에 있나요?

0

51

2

graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)

0

117

2

프로젝트 설정 (uv 설치, ..) -> 해당 영상 자료 없음

0

71

1

test.py 파일이 어딨나요?

0

70

2

EasyOcr 관련

0

64

2

neo4j 사용에 질문 드립니다.

0

59

2

fulltext index 생성이 안됩니다

0

52

2

2강 main.py 파일

0

90

3

neo4j 데스크탑 config파일설정변경

0

93

2

Preview KG_P1_02_neo4j_cypher_advanced.md자료

0

53

1

id(actor) 와 관련한 질문입니다

0

48

2

프로젝트 4 법률 실습데이터 존재하지 않음

0

58

2

LangChain 질문

0

67

2

neo4j의 장점

0

108

2

neo4j-nori-analyzer 출처 문의

0

91

2

2강에서 Aura에 파이썬으로 접속 안 됩니다.

0

139

2

AuraDB 연동 안되는 현상 질문

0

151

1

Text2Cypher 기법에서 Llm이 작성하는 cypher 코드의 오타 발생 문제

0

320

2