検索同義語の追加

最近、ここをよく読んでいて、「投稿(post)」と「返信(reply)」がやや混同して使われていることに気づきました。

もしこれが統一されれば、新しいトピックで質問をする前に検索する際、どちらか一方を間違えて使うことで生じるわずらわしい質問が減るでしょう(笑、まさに今、私自身「投稿の削除後」と「返信の削除後」で検索結果が異なることに気づきました…)。

そこでこのトピックの質問です…

「いいね!」 1

「返信」と「投稿」は100% interchangeable(互換性がある)わけではありません。Meta で見られるほとんどの使い方では同じように扱われますが、常にそうとは限りません。

投稿とは何かを説明している Understanding Discourse for new users を確認することをお勧めします。返信とは、OP(オリジナル投稿)以外のすべての投稿を指します。

「いいね!」 5

しかし、正しい用語がわからなくても、探しているものを見つけられるほうが良いと思います。

詳しい方たちは、関心のある特定の用語を引用符で囲んで明示的に検索する選択肢を、例えば「reply」のように、まだ持っているのではないでしょうか? :question:

ありがとうございます、それを読みますが、ここで新しいトピックを作成する前に、他の多くの人々がそれを読んでいるのでしょうか?

さて、私は「Discourse 新規ユーザーガイド」を読んだのですが、「返信」の明確な定義を見つけることができませんでした。

しかし、上記であなたを引用したように、「返信」は必然的に「投稿」であるため、誰かが「投稿」を検索した際には、すべての「返信」の一致結果も表示されるべきです。

また、そのガイドを読んでも、「返信」を検索した際にすべての「投稿」エントリが表示されるべきかどうかは不明です。

したがって、私は依然として、このトピックのタイトルにある要請が実行されることを望んでいます(ただし、これもあくまで私の意見です)。

返信は確かに投稿の一部ですが、すべての投稿が返信というわけではありません。そのため、「投稿」で検索する際に自動的に「返信」の検索条件が追加されるべきではありません。

あなたの設定が満たされることは、返信ではなく投稿のみを検索している他のユーザー(私のような者)を不快にさせる可能性があります。

「いいね!」 3

しかし、あなたは明らかに「事情を熟知」しているはずなので、わざわざここで「reply」検索で「post」の検索結果がなぜこれほど多く表示されるのかという新しいトピックを立てて人々を困らせることなく、明示的な検索語句を使うでしょう。

投稿や返信のセマンティクスに関わらず、検索に同義語を追加する機能は、現時点では Discourse で設定できません。

「いいね!」 9

わかった、もう黙るね :wink: でも、追加する方法があってもいいかもしれない。この素晴らしいフォーラムで初心者に対応してくれる素晴らしい方々の負担が軽くなると思うんだ :slight_smile:

実際、私は一般的な検索を行い、その後、検索内容と一部関連するリンクを辿ります。

検索エンジンは、どのリンクが辿られているかについて何らかの情報を把握しています。Discourse も同様の仕組みを持っています。トピックの末尾にある「関連トピック」は、特定の検索語と直接関係のない関連トピックを見つけるのに非常に役立ちます。

「いいね!」 1

#feature に再分類しました。機能リクエストの内容は非常に明確です。UX 内にカスタム類義語を定義できる場所を設けるよう求めています。

Postgres は、以下の通り技術的に類義語をサポートしています。

したがって、今すぐ手を動かして徹底的に技術的な実装を行いたい場合は、すでに何らかの仕組みを組み込むことは可能ですが、将来的にモデレーターがこれを定義できる UI を追加することも面白いアイデアだと同意します。

このタスクには pr-welcome を付けませんでした。実装が複雑で、正しく行うには相当な時間を要し、得られる恩恵は限られる可能性があるためです。

タイムラインについては、今後 1 年以内に着手することは想定しておらず、おそらく今後 5 年以内に着手するだろうと考えています。

「いいね!」 9

おめでとうございます、デール! :partying_face:

image

「いいね!」 1

用語を更新しました(「User」を「Member」に変更)ので、ドキュメントも更新しましたが、「User」を検索した人が自動的に「Member」という結果を見られるようにしたいと考えています。これを実現する簡単な方法について、何か良いアイデアはありますでしょうか?

CC: @michellefs

それはかなり難しいですね。インデックス化されたデータに同義語を注入するプラグインを構築できるかもしれませんが、作業には1日から5日かかるでしょう。

ここでの大きな疑問は、これがあなたにとってどれほど重要かということです。実現可能ですが、当社のカスタムコンサルティングが必要になります。

「いいね!」 1

私は何も知りませんが、それはカスタマイズ側でテキストを変更するだけのことではありませんか?それとも、いつものように、私は完全に間違って理解していますか?

検索アルゴリズムに、タグの同義語のようなツールを通じて間接的に影響を与える能力を持たせることだと考えられます。ただし、投稿内のキーワード(少なくとも元の投稿のキーワード)に限られます。

ユースケースの例としては、コミュニティメンバーやサイト訪問者が、類似のブランド専門用語ではなく、日常的な言い回しで検索する場合が挙げられます。検索アルゴリズムは、まったく異なるトピックを優先します。当サイトでの例としては、「デスクトップアプリ」と「ネイティブクライアント」というトピックを検索する場合が考えられます。

長年にわたり、タイプミスに対する見解はどのように変化したのか興味があります。

Discourse-AI では、セマンティック検索の実験を開始しました。これはまだ初期段階であり、これらのシステムを現在も探索中です。

LLM を使用して検索プロンプトを改善することも、可能なアプローチです(ただし、現在は遅いです)。

この技術については、こちらで言及されています: GitHub - texttron/hyde: HyDE: Precise Zero-Shot Dense Retrieval without Relevance Labels


100% 自動化されたアプローチ以外にも

ここでの一般的な戦略は、反復することです。製品にはすでに「監視単語」がありますが、「検索同義語」を追加する機能があれば、一般的なタイポや「詰め込みたい」一般的なフレーズを指定できます。これはスケジュールされた作業ではありませんが、スポンサーシップを検討できるものです。

Postgres のこちらに、この正確な機能の前例があります: https://www.postgresql.org/docs/current/textsearch-dictionaries.html#TEXTSEARCH-SYNONYM-DICTIONARY

私が検討に前向きなもう一つの領域(ただし、乗り気ではない)は、投稿に非表示の「メタデータ」領域を設けることで、管理者が検索語を詰め込むことができます。これは非常に目立たず、一般的には、隠されないように「適切に」詰め込むことをお勧めします。たとえば、

SEO

セマンティック、関連性、改善

「いいね!」 2

Shocked Cosmo Kramer GIF

これは純粋な天才的なアイデアであり、埋め込みベースの検索の主な問題である、ユーザーの入力が悪いという問題を解決します。

そして、検索クエリを「充実させる」という小さなステップを追加するだけで、既存のセットアップから最小限の変更で済みます :exploding_head:


このトピックに関して、私たちができることの1つは、ハイブリッド検索を行うことです。

  • 既存のPG全文検索を使用して検索
  • 埋め込みを使用して検索
  • 両方の最適な50件の結果を収集
  • 検索再ランクサービスに渡す
  • 再ランクされた結果を表示する

私たちはすでに、既存の埋め込みAPIで、別のエンドポイントの下で、非常に有能な再ランクを配信しています。これは、すべて必要なコンポーネントが準備ができていることを意味します。

例はこちら:

https://github.com/pgvector/pgvector-python/blob/master/examples/hybrid_search.py#L67-L70

「いいね!」 6