노션이 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를 사용하는 방법을 배우기

        • 노션이 한 방식

        • 이런 팀은 사용자를 이해하고 테스트하는 방식을 잘 아는 것이 강점임

노션이 AI 기능을 개발하는 방법 (라이너스 리)

www.youtube.com

노션이 AI 기능을 개발하는 방법 (라이너스 리)

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 7월 30일 오후 1:57

댓글 0