メインコンテンツへスキップ
バージョン: 安定版 (v4.x)

Markdownインデックスによる回答品質の向上

非公式ベータ版翻訳

このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →

より正確で文脈豊かな回答を大規模に提供するため、AskAIは整然と構造化されたコンテンツを活用します。これを実現する最も効果的な方法の1つが、Algoliaクローラー設定でMarkdownベースのインデックス作成ヘルパーを使用することです。この設定により、AskAIは整形されたコンテンツ中心のレコードにアクセス可能になります。メタデータやナビゲーション要素、レイアウト要素が生成AIの応答品質を低下させる可能性のある大規模ドキュメントサイトでは、特に重要です。

情報

Markdownインデックスの設定は、ほとんどのケースでクローラーUIから自動化できます。高度なカスタマイズや基盤となる設定を理解する必要がある場合は、手動設定オプションも利用可能です。

注記: Docusaurus、VitePress、Astro/Starlightおよび汎用セットアップの統合例については、このページ下部のセクションを参照してください。

概要

AskAIの応答品質を最大化するには、クローラーを設定してMarkdownコンテンツ専用のインデックスを作成してください。これにより、ドキュメントやサポートコンテンツなどMarkdownベースの素材から得られる構造化されたチャンク化レコードをAskAIが処理できるようになり、応答の関連性と精度が大幅に向上します。

Markdownインデックス設定には2つの方法があります:

  1. 自動設定(推奨): クローラーUIを使用してMarkdownインデックスを自動的に作成・設定

  2. 手動設定: 高度なカスタマイズが必要な場合にクローラーを手動で設定


Markdownインデックスの自動設定(推奨)

Markdownインデックス作成を設定する最も簡単な方法は、クローラーUIを使用することです。これにより、AskAI向けに最適化されたMarkdownインデックスが自動的に作成・設定されます。

ステップ1: クローラー設定でMarkdownインデックス機能にアクセス

  1. クローラーダッシュボードに移動

  2. 設定LLM向けMarkdown タブを選択

  3. Markdownインデックス設定セクションが表示され、専用インデックスを作成できます

クローラー設定 - LLM向けMarkdown

ステップ2: 新しいMarkdownインデックスを追加

  1. "+ インデックス追加" をクリックして新規Markdownインデックスを作成

  2. 必要なフィールドに入力:

    • インデックス名: わかりやすい名前を入力(例: my-docs-markdown
    • コンテンツタグ: HTMLコンテンツセレクターを指定(通常は main
    • テンプレート: ドキュメントフレームワークに合ったテンプレートを選択:
      • Docusaurus - Docusaurusサイト向け
      • VitePress - VitePressサイト向け
      • Astro/Starlight - Astro/Starlightサイト向け
      • 非DocSearch(汎用) - カスタムサイトやその他フレームワーク向け

Markdownインデックス追加ダイアログ

  1. "インデックス追加" をクリックして作成

クローラーは選択したテンプレートに最適な設定を自動的に構成します:

  • 適切なレコード抽出とチャンキング

  • フレームワーク固有のメタデータ抽出(言語、バージョン、タグ)

  • AskAI向けに最適化されたインデックス設定

ステップ3: クローラーを実行

Markdownインデックス設定が完了したら:

  1. "クロール開始" をクリックしてコンテンツのインデックス作成を開始

  2. ダッシュボードでクロール進捗を監視

  3. 新しいMarkdownインデックスには、AskAI向けに最適化されたクリーンで構造化されたレコードが取り込まれます

クローラー実行ステータス

ステップ4: AskAIと統合する

クロール完了後、DocSearchを設定してAskAI応答に新しいMarkdownインデックスを使用します。詳細な設定手順については、下記の統合セクションを参照してください。


手動設定(上級者向け)

高度なカスタマイズが必要な場合や、基盤となる設定を理解したいユーザー向けに、Crawler設定を直接変更することでMarkdownインデックス作成を手動で設定できます。

ステップ1: 既存のDocSearch Crawler設定を更新する

  • Crawler設定のactions: [ ... ]配列に以下を追加します:
// actions: [ ...,
{
indexName: "my-markdown-index",
pathsToMatch: ["https://example.com/docs/**"],
recordExtractor: ({ $, url, helpers }) => {
// Target only the main content, excluding navigation
const text = helpers.markdown(
"main > *:not(nav):not(header):not(.breadcrumb)",
);

if (text === "") return [];

const language = $("html").attr("lang") || "en";

const title = $("head > title").text();

// Get the main heading for better searchability
const h1 = $("main h1").first().text();

return helpers.splitTextIntoRecords({
text,
baseRecord: {
url,
objectID: url,
title: title || h1,
heading: h1, // Add main heading as separate field
lang: language,
},
maxRecordBytes: 100000, // Higher = fewer, larger records. Lower = more, smaller records.
// Note: Increasing this value may increase the token count for LLMs, which can affect context size and cost.
orderingAttributeName: "part",
});
},
},
// ...],
  • 次に、initialIndexSettings: { ... }オブジェクトに以下を追加します:
// initialIndexSettings: { ...,
"my-markdown-index": {
attributesForFaceting: ["lang"],
ignorePlurals: true,
minProximity: 1,
removeStopWords: false,
searchableAttributes: ["title", "heading", "unordered(text)"],
removeWordsIfNoResults: "lastWords",
attributesToHighlight: ["title", "text"],
typoTolerance: false,
advancedSyntax: false,
},
// ...},

ステップ2: DocSearchクローラーを実行してAskAI最適化インデックスを作成

Crawler設定を更新後:

  1. Algolia Crawlerダッシュボードで設定を公開し、保存・有効化します。

  2. クローラーを実行してMarkdownコンテンツをインデックス化し、新しいインデックスを作成します。

クローラーはMarkdown抽出ヘルパーを使用してコンテンツを処理し、新しいインデックスにAskAI向けに最適化されたクリーンで構造化されたレコードを取り込みます。

ヒント: すべてのページが正しく処理されていることを確認するため、ダッシュボードでクロール進捗を監視してください。Algoliaインデックスでインデックス化されたレコードを表示し、構造とコンテンツを検証できます。


AskAIと新しいインデックスを統合する

最適化されたインデックスがクローラーで作成されたら、DocSearchを使用する方法(ほとんどのユーザーに推奨)か、AskAI APIを使用したカスタム統合を構築する2つの方法で統合できます。

Using DocSearch

Configure DocSearch to use both your main keyword index and your markdown index for Ask AI:

docsearch({
indexName: 'YOUR_INDEX_NAME', // Main DocSearch keyword index
apiKey: 'YOUR_SEARCH_API_KEY',
appId: 'YOUR_APP_ID',
askAi: {
indexName: 'YOUR_INDEX_NAME-markdown', // Markdown index for Ask AI
apiKey: 'YOUR_SEARCH_API_KEY', // (or a different key if needed)
appId: 'YOUR_APP_ID',
assistantId: 'YOUR_ALGOLIA_ASSISTANT_ID',
searchParameters: {
facetFilters: ['language:en'], // Optional: filter to specific language/version
},
},
});
  • indexName: Your main DocSearch index for keyword search.
  • askAi.indexName: The markdown index you created for Ask AI context.
  • assistantId: The ID of your configured Ask AI assistant.
  • searchParameters.facetFilters: Optional filters to limit Ask AI context (useful for multi-language sites).

ヒント: ドキュメントが進化しても最高の検索品質とAI回答品質を維持するため、両方のインデックスを最新状態に保ってください。


ベストプラクティスとヒント

  • 検索性向上のため、Markdownファイルで明確で一貫性のあるタイトルを使用してください。

  • インデックスをテストする: AskAIを使用して関連する回答が返されることを確認

  • maxRecordBytesを調整する: 回答が広範囲すぎる/断片化しすぎている場合に調整

    • 注記: maxRecordBytesを増やすとLLMのトークン数が増加し、コンテキストウィンドウのサイズやAskAI応答のコストに影響する可能性があります
  • 最適なチャンキングのため、見出しやリストなどを使用してMarkdownを適切に構造化してください。

  • 属性を追加する: レコードにlangversiontagsなどの属性とattributesForFacetingを追加(検索UIやAskAIでのフィルタリング/ファセット化を可能にするため)


よくある質問

Q: なぜ専用のMarkdownインデックスを使用するのですか?
A: AskAIがLLM向けに最適化された形式でコンテンツにアクセスできるようになり、回答品質が向上するためです

Q: 他のコンテンツタイプでも使用可能ですか?
A: 可能ですが、Markdownは特にチャンキングとコンテキスト抽出に適しています。

Q: 非常に大きなMarkdownファイルがある場合は?
A: maxRecordBytes値を下げてコンテンツをより小さく焦点化されたレコードに分割してください。


詳細については、AskAIドキュメントを参照するか、クローラーの設定に助けが必要な場合はサポートに連絡してください。


統合別クローラー設定例

以下は主要ドキュメントプラットフォーム向けMarkdownインデックス設定の例です。各例では言語・バージョン・タグなどのファセット抽出方法と、統合向けクローラー設定方法を示しています:

Generic Example:

// In your Crawler config:

// actions: [ ...,
{
indexName: "my-markdown-index",
pathsToMatch: ["https://example.com/**"],
recordExtractor: ({ $, url, helpers }) => {
// Target only the main content, excluding navigation
const text = helpers.markdown(
"main > *:not(nav):not(header):not(.breadcrumb)",
);

if (text === "") return [];

const language = $("html").attr("lang") || "en";

const title = $("head > title").text();

// Get the main heading for better searchability
const h1 = $("main h1").first().text();

return helpers.splitTextIntoRecords({
text,
baseRecord: {
url,
objectID: url,
title: title || h1,
heading: h1, // Add main heading as separate field
lang: language,
},
maxRecordBytes: 100000, // Higher = fewer, larger records. Lower = more, smaller records.
// Note: Increasing this value may increase the token count for LLMs, which can affect context size and cost.
orderingAttributeName: "part",
});
},
},
// ...],

// initialIndexSettings: { ...,
"my-markdown-index": {
attributesForFaceting: ["lang"], // Recommended if you add more attributes outside of objectID
ignorePlurals: true,
minProximity: 1,
removeStopWords: false,
searchableAttributes: ["title", "heading", "unordered(text)"],
removeWordsIfNoResults: "lastWords",
attributesToHighlight: ["title", "text"],
typoTolerance: false,
advancedSyntax: false,
},
// ...},

各例では、一般的なファセットの抽出方法と、AskAI向けMarkdownインデックスの設定方法を示します。サイトに合わせてセレクターやメタタグ名を調整してください。