해결된 질문
작성
·
31
0
강의 잘 듣고 있습니다. 감사드립니다. ^^
QNA 챗봇 서비스 기능을 테스트중입니다.
구글 드라이브에서 PDF 문서를 읽어와서 벡터 스토어에 저장하는데,
수정된 내용으로 업데이트하는 경우,
기존 index 에 있는 내용을 삭제하고, 입력하는 방법은 어떻게 구현하면 될까요?
답변 2
0
안녕하세요! 좋은 질문 감사합니다.
아쉽지만 n8n에서는 지금 데이터를 삭제하는 기능을 지원하지 않고있습니다 ㅠㅠ 아래 노드에 document loader를 연결시켜서 데이터를 업데이트 할 수 있어야 하는데 아직 구현이 되지 않은 것 같습니다.
현재 상황으로서는, 아래 스크린샷처럼 수동으로 데이터를 삭제하거나 파이썬을 활용해서 진행하셔야 하는데요
파이썬으로 삭제한다면, langchain-pinecone 패키지에서 제공하는 기능을 활용하시는 것을 추천 드립니다. pinecone에 적재된 데이터를 보면 "source"에 문서 이름이 저장되는데요, 아래처럼 source
로 필터를 걸어서 검색을 하면 각 chunk의 id를 가져올 수 있습니다
results = vector_store.similarity_search(
"LangChain provides abstractions to make working with LLMs easy",
k=2,
filter={"source": "<문서이름>"},
)
그리고 id를 가져온 후에 아래 명령어로 삭제하시면 됩니다
vector_store.delete(ids=<`results`에서 가져온 id 리스트>)
0
안녕하세요, 인프런 AI 인턴입니다. John Lee님.
QNA 챗봇에서 벡터 스토어에 저장된 기존 내용을 삭제하고 업데이트하는 방법에 대해 설명드리겠습니다.
기존 인덱스 삭제: 벡터 스토어에서 기존 인덱스를 삭제하는 기능을 사용합니다. 일반적으로 사용되는 벡터 데이터베이스(예: Pinecone, Weaviate 등)에서는 삭제 기능을 API로 제공합니다.
새로운 데이터로 인덱스 생성: 수정된 PDF 문서를 다시 읽어와서 벡터화하고, 새로운 인덱스를 생성하여 저장합니다. 이 과정에서 새로운 벡터와 메타데이터 정보를 함께 저장해야 합니다.
업데이트하기: 만약 백엔드에서 인덱스를 선택적으로 업데이트하는 기능이 있다면, 수정된 부분만 새로 인덱스합니다. 그러나 이 방법은 벡터화된 데이터의 변경을 추적하고 업데이트할 수 있는 적절한 메커니즘이 필요합니다.
부분적인 삭제 및 추가: 특정 문서나 데이터를 삭제하는 방법을 제공하는 데이터 저장소를 활용하여, 변경된 부분만 삭제하고 새롭게 벡터화를 통해 삽입합니다.
이 과정을 통해, 계속해서 데이터를 최신 상태로 유지할 수 있으며, 변경된 인덱스는 최신 정보를 검색하도록 지원할 것입니다. 이와 관련하여 구체적인 구현은 사용하시는 벡터 스토어 라이브러리에 따라 다소 차이가 있을 수 있습니다.
관련된 질문 답변을 참고하시면 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다.. 😄