inflearn logo
강의

Khóa học

Chia sẻ kiến thức

graphRAG - Hệ thống RAG dựa trên đồ thị tri thức được triển khai bằng Neo4J (feat. LangChain)

Triển khai graphRAG (Sử dụng LangChain LCEL)

쿼리문 질문 드립니다.

85

kimsc

70 câu hỏi đã được viết

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 카카오공채-개발

Câu trả lời 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