# 비정확한 매칭을 위한 AI 검색

**URL:** https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569
**Category:** Feature
**Tags:** ai, ai-search
**Created:** [8월 17, 2023, 10:08오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569 "2023-08-17T10:08:13Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![bigfudge](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@bigfudge](https://meta.discourse.org/u/bigfudge)
#### Post date: [8월 17, 2023, 10:08오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/1 "2023-08-17T10:08:13Z")

</div>

우리는 이 사이트를 대학 학과를 위한 지식 베이스 및 토론 포럼으로 활용하고 있습니다. 예를 들어, 사람들이 다음과 같은 질문을 하고 싶어 할 수 있다고 상상해 볼 수 있습니다.

- 석사(MSc) 성적은 언제 발표되나요?
- 임상심리 석사(MPsych) 학생들의 합격 점수는 얼마인가요?
- 한 번에 몇 주까지 휴가를 신청할 수 있나요?
- 내 멘티가 1단계 모듈에서 불합격하면 어떻게 되나요?
- 멘티가 자해 행동을 할 경우 대학은 나에게 무엇을 요구하나요?
- 연구 참여자에게 얼마를 지급하나요?
- 어떻게 승진할 수 있나요?
- 박사 학위 연구 자금의 출처는 무엇인가요? 아니면 학과 박사 학위 장학금은 언제 발표되나요?
- 프로그램의 어느 단계에서 학생들은 반복 측정 ANOVA에 대해 배우나요?

이 모든 경우에 우리는 꽤 좋은 정보를 가지고 있지만, 전통적인 검색은 요약할 수 있는 올바른 결과를 찾지 못합니다. 때로는 아무것도 찾지 못하고, 때로는 “올바른” 답이 아닌 오래된 토론을 찾기도 합니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [8월 17, 2023, 10:16오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/2 "2023-08-17T10:16:00Z")

</div>

피드백을 줘서 고마워, Ben.

@falco가 작업 중인 PR 큐에서 Hyde 기반의 의미론적 검색을 개발하고 있어. 준비가 되면 해당 명령어를 추가해 보려고 해.

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [8월 17, 2023, 10:26오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/3 "2023-08-17T10:26:14Z")

</div>

참고로

여기에는 프로그래머가 아닌 분들이 많을 텐데, 키워드 검색과 의미 기반 검색의 차이는 혼란스럽게 느껴지거나, 그 작동 방식에 대해 더 깊이 알고 싶으신 분들이 계실 수 있습니다. 다음 내용은 프로그래머를 대상으로 한 것이지만, 프로그래머가 아니더라도 두 검색 방식의 차이점에 대한 핵심 개념을 배울 수 있을 정도로 기초적인 수준입니다.

[DeepLearning.AI](https://www.deeplearning.ai/about/)가 최근(2023년 8월 14일) 다음 **무료** 기초 과정을 추가했습니다.

**의미 기반 검색을 활용한 대규모 언어 모델** ([참조](https://www.deeplearning.ai/short-courses/large-language-models-semantic-search/))

이 과정은 단기 과정 페이지에서 확인할 수 있습니다.

> **[DeepLearning.AI](https://www.deeplearning.ai/courses)**
>
> Learn AI with DeepLearning.AI

* * *

AI 업계의 주요 인물들에 관심을 두시는 분들은 강의를 맡은 몇몇 인사를 알아볼 수 있을 것입니다.

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [8월 17, 2023, 10:39오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/4 "2023-08-17T10:39:58Z")

</div>

> [@sam](#):
>
> HyDE 기반 의미 검색

저처럼 연구 논문을 좋아하고 HyDE에 대해 몰랐던 분들을 위해, 해당 논문을 공유합니다.

Luyu Gao, Xueguang Ma, Jimmy Lin, Jamie Callan의 “Precise Zero-Shot Dense Retrieval without Relevance Labels” ([pdf](https://arxiv.org/pdf/2212.10496.pdf))

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [8월 17, 2023, 11:13오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/5 "2023-08-17T11:13:42Z")

</div>

> [@sam](#):
>
> Hyde 기반 의미론적 검색을 위해 @falco가 작업 중인 PR 대기열을 참고하세요.

링크를 제공해 주시겠어요? (아래에서 [답변](https://meta.discourse.org/t/discourse-ai-ai-bot-chatbot-chatgpt-anthropic/266012/42?u=ericgt)함)

죄송하지만 질문드리는 건, 제가 찾지 못해서입니다. 대신 봇 명령어에 대해서는 알게 되었네요. ([참조](https://github.com/discourse/discourse-ai/blob/3e46250f3f081cd884a95d0164c7683c6a12f0cd/lib/modules/ai_bot/entry_point.rb#L24-L39))

---

<div class="post-metadata">

### Author: ![bigfudge](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@bigfudge](https://meta.discourse.org/u/bigfudge)
#### Post date: [8월 17, 2023, 11:30오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/6 "2023-08-17T11:30:26Z")

</div>

@EricGT 링크 감사합니다. 이미 머신러닝(ML)에 대해 상당한 지식을 갖추고 있는 사람들을 제외하면, 그 논문은 꽤 어렵게 느껴질 수 있습니다.

핵심은 다음과 같습니다. 여기에서 적용되는 HyDE 방식은 먼저 LLM을 사용하여 질문을 기반으로 “가상의” 답변을 생성합니다. 이 답변은 실제 포럼 게시글과 같은 \_형식\_을 가질 수 있지만, 내용이 정해진 문서 집합이 아닌 LLM에서 생성되기 때문에 환각(hallucination)을 포함하거나 사실적으로 틀릴 수 있습니다. 이 문서는 사용자에게 표시되지 않지만, 흥미로운 점은 이 문서가 사이트의 실제 문서나 주제와 의미적으로 유사하다는 것입니다. 검색은 이 “가상의” 문서와 가장 유사한 실제 문서를 반환하며, 경험적으로 이는 검색어를 임베딩 데이터베이스의 의미적으로 유사한 문서와 단순히 매칭하는 것보다 더 잘 작동하는 것으로 보입니다.

@sam HyDE 기반 검색은 흥미롭고 직접 사용해 보고 싶습니다. 이러한 AI 기능 중 일부에 대해 조정 가능한 옵션(knobs)을 구상하고 계신가요? 예를 들어, 가상의 문서를 생성하는 데 사용되는 프롬프트와 요약/답변을 제어하는 프롬프트를 모두 편집할 수 있으면 좋을 것 같습니다. 현재 챗봇은 답변을 찾을 때 다소 장황한 편입니다. (제가 ChatGPT를 사용할 때처럼) 프롬프트 앞에 “간결하게” 또는 “요약하여” 같은 단어를 추가할 수 있으면 좋겠습니다.

---

<div class="post-metadata">

### Author: ![bigfudge](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@bigfudge](https://meta.discourse.org/u/bigfudge)
#### Post date: [8월 17, 2023, 11:31오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/7 "2023-08-17T11:31:29Z")

</div>

> <https://github.com/discourse/discourse-ai/pull/136/commits>
>
> It relies on the new outlet added on https://github.com/discourse/discourse/pull…/23390 to display semantic search results in an unobtrusive way.
> 
> We'll use a HyDE-backed approach for semantic search, which consists on generating an hypothetical document from a given keywords, which gets transformed into a vector and used in a asymmetric similarity topic search.
> 
> This PR also reorganizes the internals to have less moving parts, maintaining one hierarchy of DAOish classes for vector-related operations like transformations and querying.
> 
> Completions and vectors created by HyDE will remain cached on Redis for now, but we could later use Postgres instead.

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [8월 17, 2023, 11:39오전 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/8 "2023-08-17T11:39:42Z")

</div>

> [@bigfudge](#):
>
> 프롬프트 앞에 “간결하게” 또는 “간단히”라는 단어를 붙일 수 있으면 좋겠습니다. (저는 ChatGPT 자체를 사용할 때 자주 이렇게 합니다.)

좋은 지적입니다!

* * *

많은 분들이 이 발언에 주목하지 않을 수 있지만, 프롬프트 실행에 실제 비용을 지불하고 있다면, 이는 이해해야 할 가장 가치 있는 내용 중 하나입니다.

참고:

> **[Numbers Every LLM Developer Should Know | Anyscale](https://www.anyscale.com/blog/num-every-llm-developer-should-know)**
>
> For LLM developers, it's useful to know numbers for back-of-the-envelope calculations. Here are the numbers we use, plus how and why to use them.

> ## 프롬프트
> 
> #### 40-90%: 프롬프트 끝에 “간결하게”를 추가함으로써 절약되는 비용
> 
> 응답에 대해 토큰 단위로 비용을 지불한다는 점을 기억하는 것이 중요합니다. 즉, LLM에게 간결하게 답변하도록 요청하면 상당한 금액을 절약할 수 있습니다 [1]. 이는 단순히 프롬프트에 “간결하게”를 추가하는 것 이상으로 확장될 수 있습니다. GPT-4를 사용하여 10가지 대안을 생성하려 한다면, 5개만 요청하고 나머지 절반의 비용을 아끼는 것도 방법입니다.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [8월 17, 2023, 1:38오후 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/9 "2023-08-17T13:38:19Z")

</div>

> [@bigfudge](#):
>
> @sam 하이데 기반 검색은 정말 멋지고, 사용해 보고 싶네요.

백엔드는 준비가 되어 있지만, UI가 다소 까다로워서 디스코urse 검색 결과 페이지에 제대로 통합하는 데는 시간이 좀 걸릴 것입니다.

> [@bigfudge](#):
>
> 이러한 AI 기능 중 일부에 대해 조정 가능한 옵션을 구상하고 계신가요? 예를 들어, 가상의 문서를 생성하는 데 사용되는 프롬프트와 요약/답변을 제어하는 프롬프트를 편집할 수 있으면 좋겠다고 상상해 볼 수 있습니다.

현재 우리는 프롬프트에 대한 제어를 제공하지 않지만, 해당 기능이 잘 작동하도록 만든 후에는 나중에 프롬프트를 사용자 정의할 수 있도록 할 것입니다.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [9월 5, 2023, 4:00오후 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/10 "2023-09-05T16:00:42Z")

</div>

> [@bigfudge](#):
>
> @sam 하이데 기반 검색은 흥미롭고 사용해 보고 싶네요.

여기 메타에서 바로 사용해 볼 수 있습니다. [검색 페이지](https://meta.discourse.org/search?expanded=false&q=automate)로 가서 몇 가지 질문을 입력해 보세요. 결과가 어땠는지 알려주세요.

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [9월 6, 2023, 8:15오후 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/11 "2023-09-06T20:15:16Z")

</div>

> [@Falco](#):
>
> 어떻게 되는지 알려주세요.

정말 좋습니다! 특히 정확히 일치하는 검색에서 "결과 없음"을 반환하는 검색어를 입력할 때 더욱 그렇습니다.

마감된 #Marketplace 주제에 대해 의미적으로 올바른 매칭이 꽤 많이 나오고 있습니다. 이러한 결과를 반환하는 것이 유용할 수도 있지만, 목록의 하단에 표시되는 것이 더 나을 수도 있습니다.

검색을 특정 카테고리나 태그로 좁힐 수 있다면 좋겠습니다. 예를 들어:

- "사용자가 워드프레스에서 로그인할 때 활성화 이메일이 전송되지 않도록 하는 방법은 무엇입니까?"라고 검색할 경우, 가장 좋은 결과는 #Documentation 또는 #support:wordpress에서 발견될 것입니다.

- "가장 많은 '좋아요’를 받은 주제를 반환하는 [Data Explorer](https://meta.discourse.org/t/32566?silent=true) 쿼리를 작성하는 방법은 무엇입니까?"라고 검색할 경우, 가장 좋은 결과는 #data-reporting 및 #Documentation 카테고리에서 발견될 것입니다.

가능하다면, 초기 검색은 가장 가능성이 높은 카테고리에서 결과를 반환하고, 다른 카테고리로 검색을 확장해 보라는 제안이 주어질 수 있습니다.

Discourse를 고객 지원 포럼으로 사용할 때 의미 기반 검색을 첫 단계로 고려해 보면, 특정 카테고리나 태그를 우선순위로 설정할 수 있으면 좋겠습니다. 예를 들어, Meta의 경우 초기 검색에서 #Documentation 카테고리를 우선적으로 검색하도록 설정할 수 있습니다.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [9월 6, 2023, 8:22오후 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/12 "2023-09-06T20:22:10Z")

</div>

> [@simon](#):
>
> 정말 좋습니다! 특히 정확한 일치 검색에서 “결과 없음”을 반환하는 검색어를 입력할 때 더욱 그렇습니다.

이 새로운 기능을 통해 해결하고자 했던 문제 중 하나가 바로 그것입니다. 의미론적 검색은 항상 _어떤 결과_를 찾아냅니다.

> [@simon](#):
>
> 초기 검색에서 가장 가능성이 높은 카테고리의 결과를 반환하고, 다른 카테고리로 검색을 확장해 볼 것을 제안하는 기능이 있었으면 좋겠습니다.

현재 의미론적 검색은 매우 기본적인 상태입니다. 백엔드에서 몇 줄의 코드로 구성되어 있으며, 의미론적으로 가장 가까운 결과를 반환합니다. 지난 10년 동안 표준 검색에 추가된 검색 기능, 예를 들어 [2.3 버전의 검색 개선 사항](https://meta.discourse.org/t/search-improvements-in-2-3/113411) 등 많은 기능이 빠져 있습니다. 이 때문에 현재는 보완적인 결과 집합으로 제공되고 있습니다.

이 기능이 잘 받아들여지고 제품에서 UI를 완벽하게 다듬을 수 있다면, 의미론적 검색 결과에 Discourse 고유한 부분들을 통합해 보려 합니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [9월 6, 2023, 10:48오후 UTC](https://meta.discourse.org/t/ai-search-for-finding-non-exact-matches/275569/13 "2023-09-06T22:48:28Z")

</div>

> [@Falco](#):
>
> 이것이 바로 이 새로운 기능으로 해결하고 싶었던 문제 중 하나입니다. 시맨틱 검색은 항상 _무언가_를 찾게 됩니다.

네, 복잡한 쿼리에 정말 놀라운 기능입니다.

 ![image](https://global.discourse-cdn.com/meta/original/4X/c/a/c/cac25a79c5cf9f6b04e1d1ff43217e5e3dabf6d4.png)

해당 쿼리에 대한 게시글은 찾지 못했지만, 올바른 위치를 가리키는 충분한 주제들을 찾아냈습니다!
