노션이 AI 기능을 개발하는 방법(라이너스 리)
https://youtu.be/Ht5-kbVHoGQ?si=Qs4RnYgVcfkmBeul * 입사할 때 노션 AI 팀은 4명 * AI 1명, 웹 개발자 2명, 대표 1명 * 현재는 20명 * AI 프러덕트 3개 * AI Writer : 23년 2월 런칭 * Autofill : DB 채우기 : 23년 5월 런칭 * Q&A : 노션에 있는 것을 RAG해서 질문 : 23년 11월 런칭 * AI 프러덕트 개발할 때 퀄리티, Evaluation * 모델이 처음 나올 때, Research 벤치마크가 많음. MMLU 등. 제품 개발할 땐 큰 도움이 되진 않음 * 노션에선 우리 사례에서 가장 적합할 것 같은 모델을 선택해 리얼 월드의 케이스와 비교함 * LLM-as-a-judge * 출력이 정확한지, 간결한지, 좋은 요약인지, 핵심 정보를 포함하고 있는지, 노션 사용자에게 유용한지 평가 * 노션 내부적으로 작은 테스트 그룹에 제품을 배포하고, 제품 자체적으로 사용자의 맥락에 맞게 출력이 잘 되는지 확인함 * 제품을 출시하면 지속적으로 모니터링 : 다양한 지표를 통해 사용자들이 AI와 어떻게 상호작용하는지, 실시간으로 오류가 발생하는지 관찰 * AI가 생성하는 인용의 수 같은 요소를 분석해 AI가 질문에 답하는 정확도를 수정하려고 시도하는 지표도 있음 * AI 개발을 하면서 느낀 핵심 교훈 * Evaluation, Data가 제일 중요한 핵심이다 * 데이터가 중요한 이유 : Evaluation의 품질이 사용자들이 입력할 실제 데이터와 밀접하게 일치하는지에 크게 의존하기 때문 * 요약에 대한 벤치마크 * 벤치마크와 노션 사용자는 다름. 노션 사용자는 회의, 보고서, 팀에서 일하는 사람들의 업데이트 등에 관한 것임 * 우리만의 데이터셋과 우리만의 평가 방법을 만들어야 함 * 우리가 어떤 종류의 문서를 처리할 수 있기를 기대하는가? * 이런 접근을 가지면, 누가 페이지 요약해달라고 할 때 모델에 바로 뛰어들지 않고 물을 수 있음 : 좋은 요약이란 무엇인가요? 어떤 페이지를 요약해야 하나요? (=> 문제 정의와 상황에 대한 인지) * 노션에서 평가와 함께 커뮤니케이션하는 방법 * Input 모으기 * 프로토타입 : 많은 API를 사용 * 실패 사례를 모으면 이를 활용할 수 있음 * (질문) 데이터셋 수집이 어렵지 않을까요? * 초기에 사용 사례 데이터를 어떻게 구성하는게 궁금한지 * 2가지 방법 * (1) 프로토타입을 일단 만들고 20명 정도의 팀원들과 사용. 실제 사용케이스를 넣으면서 진행. 초기 데이터가 꼭 완전히 실제 데이터일 필요 없음. 제품을 개선하는 과정을 반복하는 과정에서 만들고 계속 개선 * (2) 실패 케이스에 대해 매우 명확한 정의를 갖는 것 * Q&A 기능에 외국어 지원을 만들 때 명확했음 * Q&A가 이미 하고 있는 것과 동일한 작업을 수행하되 외국어로 하길 원함 * 기존에 있는 데이터를 외국어로 바꾸고, 기존 데이터의 답변도 외국어로 바꾸고 결과를 기반으로 확인 * 실패 수집하기 * 로깅이 매우 중요함. 잘 로깅하기 * 사용자 인터뷰 : 노션 내부, 외부 * 사용자들이 좋아요, 싫어요를 많이 하지 않음 * 포괄적이고 재현 가능한 로깅을 구축해야 함 * 잘못된 결과를 가지고 와서 그 예시를 기반으로 전체 파이프라인을 재구성하고 디버깅할 수 있어야 함 * 디자이너, 제품 담당자가 어떤 입력을 시도했는데 실패했어요라고 말하면 로그에서 모델에 어떤 것이 들어왔고, 어떤 출력이 나왔는지 검색할 수 있음 * AI 제품을 만들며 얻은 교훈 * (1) 가능한 빨리, 자주 제품을 사용해 작업에 대한 이해를 개선 * (2) 많은 사람들이 AI 방어 가능성, 고유한 차별화에 대해 고민함. 하지만 단순히 모델을 제품으로 만드는 것이 아니라 AI 위에 최종 사용자를 위한 것을 구축하려고 하면 가장 중요한 점은 여러분의 팀이 AI가 수행해야 할 작업을 누구보다 잘 이해해야 함 * 왜 그게 어려운지? * 그 작업을 쉽게 할 수 있도록 어떻게 분해해야 하는지? * 모델이 자주 실수하는 방식은 무엇인지? * 모델이 자연스럽게 잘하는 것과 못하는 것은 무엇인지 알아야 함 * 모델이 어려워하는 작업을 어떻게 해야 더 잘 수행할 수 있을까 * 이걸 하기 위해 자주 제품을 쓰고, 출력을 살펴보고 특정 사용 사례에서 모델이 왜 실수했는지 이해하려고 노력해야 함 * (3) 만드는 제품의 종류를 설명할 때 인터페이스도 포함하고, 제품 명세의 일부로 평가 방법과 좋은 출력의 기준을 정의해야 함 * 머신러닝 통찰력이 생성형 AI 모델에 더 많이 적용됨 * 언어 모델에선 개별 사례를 살펴보는 일을 더 많이 함 * AI팀이 잘 구성되는 주요 방식 * 2가지가 존재 * (1) 기존의 머신러닝팀을 AI, 언어 모델링팀으로 바꾸는 것 * 데이터에 매우 집중하고, 평가와 벤치마크 점수에 집중하는 팀을 만드는 경향이 있음 * 주의할 점 : 평가가 사용자가 실제로 하고 싶어하는 것을 반영하는지 확인하는 것을 계속 해야 함 * (2) 회사에 기존 ML팀이 없는 경우, 개발자들이 OpenAI API를 사용하는 방법을 배우기 * 노션이 한 방식 * 이런 팀은 사용자를 이해하고 테스트하는 방식을 잘 아는 것이 강점임