> ## Documentation Index
> Fetch the complete documentation index at: https://hellotars.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage documents

> Preview, edit, and delete the documents and media in a knowledge base, then apply the changes with a reindex.

export const Browser = ({url, children}) => <div className="tars-browser">
    <div className="tars-browser-bar">
      <span className="tars-browser-dots">
        <i />
        <i />
        <i />
      </span>
      {url ? <span className="tars-browser-url">{url}</span> : null}
    </div>
    <div className="tars-browser-view">{children}</div>
  </div>;

export const img = {
  activity: {
    activityTimeline: "/docs/guides/activity/images/activity-timeline.png",
    capturedVariablesPanel: "/docs/guides/activity/images/captured-variables-panel.png",
    dataViewCards: "/docs/guides/activity/images/data-view-cards.png",
    exportDataDialog: "/docs/guides/activity/images/export-data-dialog.png",
    tasksPanelExportReady: "/docs/guides/activity/images/tasks-panel-export-ready.png"
  },
  analytics: {
    analyticsOverview: "/docs/guides/analytics/images/analytics-overview.png",
    exploreGallery: "/docs/guides/analytics/images/explore-gallery.png",
    exploreTab: "/docs/guides/analytics/images/explore-tab.png",
    goalForm: "/docs/guides/analytics/images/goal-form.png",
    goalsTab: "/docs/guides/analytics/images/goals-tab.png",
    improveDiagnostics: "/docs/guides/analytics/images/improve-diagnostics.png",
    improveTab: "/docs/guides/analytics/images/improve-tab.png",
    teamTab: "/docs/guides/analytics/images/team-tab.png"
  },
  billing: {
    billingOverview: "/docs/guides/billing/images/billing-overview.png",
    buyConversationsDialog: "/docs/guides/billing/images/buy-conversations-dialog.png",
    buySeatsDialog: "/docs/guides/billing/images/buy-seats-dialog.png",
    livechatSeatsTab: "/docs/guides/billing/images/livechat-seats-tab.png",
    organizationDeletionLifecycle: "/docs/guides/billing/images/organization-deletion-lifecycle.svg",
    organizationSwitcher: "/docs/guides/billing/images/organization-switcher.png",
    rolesAndAccessMatrix: "/docs/guides/billing/images/roles-and-access-matrix.png"
  },
  building: {
    agentBehaviorGuardrails: "/docs/guides/building/images/agent-behavior-guardrails.png",
    agentCardMenu: "/docs/guides/building/images/agent-card-menu.png",
    agentConfigure: "/docs/guides/building/images/agent-configure.png",
    agentExitRoutesDialog: "/docs/guides/building/images/agent-exit-routes-dialog.png",
    agentLibrary: "/docs/guides/building/images/agent-library.png",
    agentModelParameters: "/docs/guides/building/images/agent-model-parameters.png",
    aiAgentGambitLoop: "/docs/guides/building/images/ai-agent-gambit-loop.svg",
    builderBasics: "/docs/guides/building/images/builder-basics.png",
    builderConnectHandlePanel: "/docs/guides/building/images/builder-connect-handle-panel.png",
    builtInToolsDialog: "/docs/guides/building/images/built-in-tools-dialog.png",
    configureDebugTab: "/docs/guides/building/images/configure-debug-tab.png",
    configureLanguage: "/docs/guides/building/images/configure-language.png",
    configureNotifications: "/docs/guides/building/images/configure-notifications.png",
    createAgentDialog: "/docs/guides/building/images/create-agent-dialog.png",
    draftPublishRollbackPinning: "/docs/guides/building/images/draft-publish-rollback-pinning.svg",
    draftSwitcherChip: "/docs/guides/building/images/draft-switcher-chip.png",
    duplicateAgentDialog: "/docs/guides/building/images/duplicate-agent-dialog.png",
    flowConditions: "/docs/guides/building/images/flow-conditions.png",
    gambitPalette: "/docs/guides/building/images/gambit-palette.png",
    gambits: {
      gambitAiAgent: "/docs/guides/building/gambits/images/gambit-ai-agent.png",
      gambitApiCall: "/docs/guides/building/gambits/images/gambit-api-call.png",
      gambitAutoSuggestion: "/docs/guides/building/gambits/images/gambit-auto-suggestion.png",
      gambitButton: "/docs/guides/building/gambits/images/gambit-button.png",
      gambitCard: "/docs/guides/building/gambits/images/gambit-card.png",
      gambitChannel: "/docs/guides/building/gambits/images/gambit-channel.png",
      gambitCustomCode: "/docs/guides/building/gambits/images/gambit-custom-code.png",
      gambitDateTime: "/docs/guides/building/gambits/images/gambit-date-time.png",
      gambitGeoLocation: "/docs/guides/building/gambits/images/gambit-geo-location.png",
      gambitLanguage: "/docs/guides/building/gambits/images/gambit-language.png",
      gambitLiveChat: "/docs/guides/building/gambits/images/gambit-live-chat.png",
      gambitMediaUpload: "/docs/guides/building/gambits/images/gambit-media-upload.png",
      gambitNoInput: "/docs/guides/building/gambits/images/gambit-no-input.png",
      gambitRedirect: "/docs/guides/building/gambits/images/gambit-redirect.png",
      gambitStarRating: "/docs/guides/building/gambits/images/gambit-star-rating.png",
      gambitStartAndEnd: "/docs/guides/building/gambits/images/gambit-start-and-end.png",
      gambitText: "/docs/guides/building/gambits/images/gambit-text.png",
      gambitTrigger: "/docs/guides/building/gambits/images/gambit-trigger.png"
    },
    languagesTranslateGambit: "/docs/guides/building/images/languages-translate-gambit.png",
    languageSystemMessages: "/docs/guides/building/images/language-system-messages.png",
    newDraftDialog: "/docs/guides/building/images/new-draft-dialog.png",
    outputComponentsGrid: "/docs/guides/building/images/output-components-grid.png",
    publishDialog: "/docs/guides/building/images/publish-dialog.png",
    systemPromptDialog: "/docs/guides/building/images/system-prompt-dialog.png",
    testModeEventLog: "/docs/guides/building/images/test-mode-event-log.png",
    testModePanel: "/docs/guides/building/images/test-mode-panel.png",
    validationProblemsPanel: "/docs/guides/building/images/validation-problems-panel.png",
    variablePickerPanel: "/docs/guides/building/images/variable-picker-panel.png",
    variablePillInserted: "/docs/guides/building/images/variable-pill-inserted.png",
    versionsDraftsPanel: "/docs/guides/building/images/versions-drafts-panel.png"
  },
  campaigns: {
    campaignFlavorsTriggers: "/docs/guides/campaigns/images/campaign-flavors-triggers.svg",
    campaignReplyRouting: "/docs/guides/campaigns/images/campaign-reply-routing.svg",
    campaignSendAnatomy: "/docs/guides/campaigns/images/campaign-send-anatomy.svg",
    createACampaign: "/docs/guides/campaigns/images/create-a-campaign.png",
    walletReserveSettleRefund: "/docs/guides/campaigns/images/wallet-reserve-settle-refund.svg",
    webhookCampaignContractLocking: "/docs/guides/campaigns/images/webhook-campaign-contract-locking.svg",
    webhookCampaignLifecycleStates: "/docs/guides/campaigns/images/webhook-campaign-lifecycle-states.svg",
    webhookCampaignOneCallOneDelivery: "/docs/guides/campaigns/images/webhook-campaign-one-call-one-delivery.svg"
  },
  channels: {
    distributeWhatsappConnect: "/docs/guides/channels/images/distribute-whatsapp-connect.png",
    whatsappConnectDialogWaiting: "/docs/guides/channels/images/whatsapp-connect-dialog-waiting.png",
    whatsappEmptyState: "/docs/guides/channels/images/whatsapp-empty-state.png"
  },
  deploy: {
    bridgeEventGambitSection: "/docs/guides/deploy/images/bridge-event-gambit-section.png",
    deploymentSurfacesAndChannels: "/docs/guides/deploy/images/deployment-surfaces-and-channels.svg",
    designAgentTab: "/docs/guides/deploy/images/design-agent-tab.png",
    designLauncherTab: "/docs/guides/deploy/images/design-launcher-tab.png",
    embedIframeTab: "/docs/guides/deploy/images/embed-iframe-tab.png",
    embedTheWidget: "/docs/guides/deploy/images/embed-the-widget.png",
    mobileAppIntegration: "/docs/guides/deploy/images/mobile-app-integration.png",
    onYourDomain: "/docs/guides/deploy/images/on-your-domain.png",
    shareYourAgentLink: "/docs/guides/deploy/images/share-your-agent-link.png"
  },
  developer: {
    api: {
      channelSendTemplateVsMessage: "/docs/developer/api/images/channel-send-template-vs-message.svg",
      endUsers: {
        endUsersListCursorPagination: "/docs/developer/api/end-users/images/end-users-list-cursor-pagination.svg"
      },
      triggerCallConversationLifecycle: "/docs/developer/api/images/trigger-call-conversation-lifecycle.svg"
    },
    developerSurfacesMap: "/docs/developer/images/developer-surfaces-map.svg",
    embed: {
      embedConfigToWidgetContext: "/docs/developer/embed/images/embed-config-to-widget-context.svg",
      hostPageBridgeFlow: "/docs/developer/embed/images/host-page-bridge-flow.svg",
      identitySigningFlow: "/docs/developer/embed/images/identity-signing-flow.svg",
      scriptVsIframeEmbed: "/docs/developer/embed/images/script-vs-iframe-embed.svg"
    },
    mobile: {
      bridgeMessageProtocol: "/docs/developer/mobile/images/bridge-message-protocol.svg",
      webviewBridgeArchitecture: "/docs/developer/mobile/images/webview-bridge-architecture.svg"
    }
  },
  endUsers: {
    anonymousToIdentifiedProfile: "/docs/guides/end-users/images/anonymous-to-identified-profile.svg",
    bulkActionBar: "/docs/guides/end-users/images/bulk-action-bar.png",
    campaignConsentGate: "/docs/guides/end-users/images/campaign-consent-gate.svg",
    consentPerChannelStates: "/docs/guides/end-users/images/consent-per-channel-states.svg",
    dynamicVsStaticSegments: "/docs/guides/end-users/images/dynamic-vs-static-segments.svg",
    endUserDirectory: "/docs/guides/end-users/images/end-user-directory.png",
    endUserProfileAcrossChannels: "/docs/guides/end-users/images/end-user-profile-across-channels.svg",
    endUserProfilePanes: "/docs/guides/end-users/images/end-user-profile-panes.png",
    profileMergeAndTakeoverProtection: "/docs/guides/end-users/images/profile-merge-and-takeover-protection.svg",
    segmentBuilder: "/docs/guides/end-users/images/segment-builder.png",
    segmentsPage: "/docs/guides/end-users/images/segments-page.png"
  },
  getStarted: {
    agentStates: "/docs/get-started/images/agent-states.svg",
    buildToLivePath: "/docs/get-started/images/build-to-live-path.svg",
    dashboardSidebarMap: "/docs/get-started/images/dashboard-sidebar-map.png",
    organizationOwnershipAndRoles: "/docs/get-started/images/organization-ownership-and-roles.svg",
    quickstart: {
      step1CreateYourAccount: "/docs/get-started/images/quickstart/step-1-create-your-account.png",
      step3ConnectTheAiAgent: "/docs/get-started/images/quickstart/step-3-connect-the-ai-agent.png",
      step4TestMode: "/docs/get-started/images/quickstart/step-4-test-mode.png"
    },
    quickstartCanvas: "/docs/get-started/images/quickstart-canvas.png"
  },
  knowledge: {
    addASource: "/docs/guides/knowledge/images/add-a-source.png",
    addRetrieverPicker: "/docs/guides/knowledge/images/add-retriever-picker.png",
    attachKnowledgeGambit: "/docs/guides/knowledge/images/attach-knowledge-gambit.png",
    configureARetriever: "/docs/guides/knowledge/images/configure-a-retriever.png",
    createKnowledgeBaseDialog: "/docs/guides/knowledge/images/create-knowledge-base-dialog.png",
    customRetrieverDialog: "/docs/guides/knowledge/images/custom-retriever-dialog.png",
    datasetTab: "/docs/guides/knowledge/images/dataset-tab.png",
    documentChangeReindexLifecycle: "/docs/guides/knowledge/images/document-change-reindex-lifecycle.svg",
    documentsTabPreview: "/docs/guides/knowledge/images/documents-tab-preview.png",
    importAWebsite: "/docs/guides/knowledge/images/import-a-website.png",
    kbList: "/docs/guides/knowledge/images/kb-list.png",
    manageMedia: "/docs/guides/knowledge/images/manage-media.png",
    retrieverIndexStates: "/docs/guides/knowledge/images/retriever-index-states.svg",
    retrieverQueryPipeline: "/docs/guides/knowledge/images/retriever-query-pipeline.svg",
    standardVsParentChildChunking: "/docs/guides/knowledge/images/standard-vs-parent-child-chunking.svg",
    syncManagement: "/docs/guides/knowledge/images/sync-management.png",
    testRetriever: "/docs/guides/knowledge/images/test-retriever.png"
  },
  liveChat: {
    agentWorkspace: "/docs/guides/live-chat/images/agent-workspace.png",
    assignedAgentPicker: "/docs/guides/live-chat/images/assigned-agent-picker.png",
    automaticAssignmentRouting: "/docs/guides/live-chat/images/automatic-assignment-routing.svg",
    availabilityDropdown: "/docs/guides/live-chat/images/availability-dropdown.png",
    cannedResponses: "/docs/guides/live-chat/images/canned-responses.png",
    composerPreferences: "/docs/guides/live-chat/images/composer-preferences.png",
    copilotPanel: "/docs/guides/live-chat/images/copilot-panel.png",
    filterConversationsDialog: "/docs/guides/live-chat/images/filter-conversations-dialog.png",
    inboxAnalyticsTab: "/docs/guides/live-chat/images/inbox-analytics-tab.png",
    inboxAvailabilityTab: "/docs/guides/live-chat/images/inbox-availability-tab.png",
    inboxesSettings: "/docs/guides/live-chat/images/inboxes-settings.png",
    inboxRoutingTab: "/docs/guides/live-chat/images/inbox-routing-tab.png",
    labelsSettings: "/docs/guides/live-chat/images/labels-settings.png",
    newAttributeDialog: "/docs/guides/live-chat/images/new-attribute-dialog.png",
    newCannedResponseDialog: "/docs/guides/live-chat/images/new-canned-response-dialog.png",
    notificationPreferences: "/docs/guides/live-chat/images/notification-preferences.png",
    notificationsPage: "/docs/guides/live-chat/images/notifications-page.png",
    pickupTargetCard: "/docs/guides/live-chat/images/pickup-target-card.png",
    resolveMenu: "/docs/guides/live-chat/images/resolve-menu.png",
    searchDialog: "/docs/guides/live-chat/images/search-dialog.png",
    seatGateConversation: "/docs/guides/live-chat/images/seat-gate-conversation.png",
    seatsSettings: "/docs/guides/live-chat/images/seats-settings.png",
    workTheInbox: "/docs/guides/live-chat/images/work-the-inbox.png"
  },
  security: {
    addOpenRouterKeyDialog: "/docs/guides/security/images/add-open-router-key-dialog.png",
    auditChainVerified: "/docs/guides/security/images/audit-chain-verified.png",
    auditEventDrawer: "/docs/guides/security/images/audit-event-drawer.png",
    auditExportDialog: "/docs/guides/security/images/audit-export-dialog.png",
    auditLogViewer: "/docs/guides/security/images/audit-log-viewer.png",
    auditRecordLifecycle: "/docs/guides/security/images/audit-record-lifecycle.svg",
    logPrivacyRedactionEnabled: "/docs/guides/security/images/log-privacy-redaction-enabled.png",
    modelProviderEmptyState: "/docs/guides/security/images/model-provider-empty-state.png",
    privacySettings: "/docs/guides/security/images/privacy-settings.png",
    siemConnectWizard: "/docs/guides/security/images/siem-connect-wizard.png",
    supportActorMasking: "/docs/guides/security/images/support-actor-masking.svg"
  },
  tools: {
    addToolModal: "/docs/guides/tools/images/add-tool-modal.png",
    addToolsPanel: "/docs/guides/tools/images/add-tools-panel.png",
    codekitActionEditor: "/docs/guides/tools/images/codekit-action-editor.png",
    codekitConnectToolkitsDialog: "/docs/guides/tools/images/codekit-connect-toolkits-dialog.png",
    codekitSchemaDialog: "/docs/guides/tools/images/codekit-schema-dialog.png",
    codekitToolkit: "/docs/guides/tools/images/codekit-toolkit.png",
    codekitToolkitAnatomy: "/docs/guides/tools/images/codekit-toolkit-anatomy.svg",
    createActionDialog: "/docs/guides/tools/images/create-action-dialog.png",
    createCodekitDialog: "/docs/guides/tools/images/create-codekit-dialog.png",
    responseFilteringDialog: "/docs/guides/tools/images/response-filtering-dialog.png",
    toolGambitEditorAgentMode: "/docs/guides/tools/images/tool-gambit-editor-agent-mode.png",
    toolGambitEditorWorkflowMode: "/docs/guides/tools/images/tool-gambit-editor-workflow-mode.png",
    toolkitDetail: "/docs/guides/tools/images/toolkit-detail.png",
    toolsConnected: "/docs/guides/tools/images/tools-connected.png",
    toolsDirectory: "/docs/guides/tools/images/tools-directory.png",
    viewActionsModal: "/docs/guides/tools/images/view-actions-modal.png",
    workflowModeResponse: "/docs/guides/tools/images/workflow-mode-response.png"
  }
};

export const urls = {
  app: "https://dashboard.hellotars.com",
  site: "https://hellotars.com",
  support: "mailto:support@hellotars.com",
  status: "https://status.hellotars.com"
};

At the end of this page, you can read, edit, and delete any document in a knowledge base, and describe its images and videos. You can also bring the changes into live answers with a reindex.

<Browser url={urls.app}>
  <img src={img.knowledge.documentsTabPreview} alt="The Documents tab with the document list on the left and a selected document rendered on the right, with the Preview and Raw toggle above the content" />
</Browser>

## Before you start

Before you start, sign in to <a href={urls.app}>the dashboard</a> and select the organization you want to work in.

* You need a knowledge base with at least one source. See [Create a knowledge base](/docs/guides/knowledge/create-a-knowledge-base).
* Your role must allow resource management to add, edit, or delete documents.

## The Documents tab

Open the knowledge base from **Knowledge** in the sidebar. The page opens on the **Documents** tab. The left pane lists every document, and the right pane previews the selected one.

A bar above the panes shows the last sync time and the page count. It also holds **Manage media** and, for roles that manage resources, **Sync management**.

When edits or deletions leave a retriever behind, an amber alert reads **A retriever needs reindexing**. With several, it counts them. Its **Reindex** button switches to the **Retriever** tab.

While an import runs, a progress banner reports the scraped page count. See [Import a website](/docs/guides/knowledge/import-a-website) for the import flow, the page review, and the sync schedules.

## The document list

The list header reads **Pages**.

| Control | What it does |
| - | - |
| **Flat list** / **Group by source** | Icon toggle for the list layout. The grouped view puts website pages under their host and uploaded files under **Uploads**. The choice persists per browser. |
| **Add more** | Opens the **Add a source** dialog. Disabled while a retriever builds, with the tooltip **Locked while a retriever is building**. |
| **Search pages…** | Searches document titles. No match shows **No documents match.** |

When the knowledge base has no documents and no import, the pane shows **No content yet** with an **Add source** button.

Each row shows the document title and its page address, **Uploaded file**, or **Document**. A row carries a status badge only while it needs attention. A document without a badge is ready.

| Status badge | Meaning |
| - | - |
| **Queued** / **Processing…** | The content is still being processed. |
| **Couldn't process** | Processing failed. |
| **Cancelled** | Processing was cancelled. |
| **Sync paused** | Website syncs no longer change this page. |

During the first import of a website, the list shows **Importing pages** and fills in as pages are scraped. During a later sync, the list keeps its current rows until the crawl finishes.

## The preview pane

Select a row to load it on the right. The header shows the title and the source address. After a document has changed, an activity line gives the last update time, the cause, and the revision number.

A sliding toggle switches the content view:

| View | What it shows |
| - | - |
| **Preview** | The content rendered as formatted text, with its images and playable videos. |
| **Raw** | The stored plain text. |

A document still parsing shows **Parsing this document…**. A failed one shows **This document failed to parse.** with the stored error.

Roles that manage resources also see actions in the header:

| Action | What it does |
| - | - |
| **Pause website sync** / **Resume website sync** | An icon button on scraped pages only. Paused, this website's fetches can no longer change or remove the page. Deleting the website source still removes it. |
| **More actions** > **Edit** | Opens the inline editor. Shown only when parsing is done and content exists. |
| **More actions** > **Delete** | Opens the delete confirmation. |

Edit and delete are disabled while a retriever builds. The menu then notes **Locked while a retriever is building**.

A scraped page that you edited and did not pause shows an amber warning above the content. It states that a website sync can replace your edit with the live page.

## Edit a document

<Warning>
  A website sync can replace a manual edit on a scraped page. [Pause website sync](#pause-website-sync-for-one-page) on the page before you edit it.
</Warning>

<Steps>
  <Step title="Select the document">
    The preview loads on the right.
  </Step>

  <Step title="Open More actions and select Edit">
    The pane switches to an editor with the title field above the full text.
  </Step>

  <Step title="Change the title, the text, or both">
    The body cannot be saved empty.
  </Step>

  <Step title="Select Save changes">
    Retrievers keep answering from their current index until the next reindex.
  </Step>
</Steps>

A toast confirms **Document updated**. Every saved change to the text creates a revision that the activity line reports.

Your draft stays when you select another document and come back. If the page changes while you edit, an alert tells you that your unsaved changes are kept. Saving then replaces the latest content.

## Pause website sync for one page

Select **Pause website sync** in the preview header of a scraped page. The row badge switches to **Sync paused**, and future fetches of that website skip the page. Select **Resume website sync** to let syncs update it again.

Pausing protects one page. To change a whole source's re-fetch schedule, use **Sync management**. See [Import a website](/docs/guides/knowledge/import-a-website#sync-management).

Pausing does not protect a page from a source deletion. Deleting the website source removes its paused pages too, unless another source also added them. See [Delete a website source](/docs/guides/knowledge/import-a-website#delete-a-website-source).

## Delete a document

<Warning>
  A reindex makes the removal permanent.
</Warning>

Open **More actions** in the preview header and select **Delete**. The **Delete document?** dialog explains that the document keeps answering until the next reindex applies the removal. Confirm with **Delete**.

A toast confirms **Document removed**, and the row leaves the list. The **Apply pending changes** dialog counts the removal until a reindex runs.

## Manage media

Select **Manage media** above the document list to open the **Manage media** dialog. It shows the images and videos found in the documents of this knowledge base.

<Browser url={urls.app}>
  <img src={img.knowledge.manageMedia} alt="The Manage media dialog with the Media search switch on, Reprocess all media, the search field, and a grid of media cards, each with a preview, alt text, Referenced by, and the Edit context, View in document, and Hide image actions" />
</Browser>

The **Media search** switch at the top embeds the images and videos of this knowledge base so the agent can find them. It is off by default, and turning it on uses extra vector storage. With media search on, the agent can show matching images and videos in its replies. Roles that cannot manage resources see an **Enabled** or **Disabled** badge instead.

Turning the switch off stops new media from being embedded.

| Control | What it does |
| - | - |
| **Search media by alt text or URL…** | Filters the grid. |
| **Reprocess all media** | Extracts and embeds every image and video again. Shown when media search is on. Use it after you turn the switch on, so existing media is embedded. |
| **Load more** | Loads the next part of the grid. |

Each card shows a preview, the alt text, and the documents that reference the media under **Referenced by**. Select the preview to open the source document at that media.

| Badge | Meaning |
| - | - |
| **Hidden** | The agent does not show this media in its replies. The preview is grayed out. |
| **No vector** | The media is not embedded yet. Hover over the badge to see the error, when there is one. |

Roles that can manage resources see three actions on each card.

| Action | What it does |
| - | - |
| **Edit context** | Opens the context editor for the media. |
| **View in document** | Opens the source document with the media selected. |
| **Hide image** or **Show image** | Removes the media from agent replies, or brings it back. |

You cannot hide or show media while an experiment runs on this knowledge base.

### Describe an image or video

A short description helps search find media whose alt text is missing or vague.

<Steps>
  <Step title="Open the context editor for the media">
    Select **Edit context** on its card, or hover over the media in the document preview and select **Add context**.
  </Step>

  <Step title="Type a description on the Manual context tab">
    The field takes up to 4000 characters, but only the first 500 are embedded.
  </Step>

  <Step title="Select Save">
    With media search on, the affected documents are embedded again shortly.
  </Step>
</Steps>

The manual context repeats three times in the embedding, so it carries more weight than the page text. The button reads **Edit context** when a description exists. Select **Clear** to remove it.

### Edit the surrounding context

The **Surrounding context** tab holds the page text that Tars extracted around the media. This text is embedded at normal weight. Edit it to remove noise, such as navigation text or an unrelated caption.

You can only remove text from the extracted context, up to 2000 characters. If you add text, an error explains the rule and **Save** stays disabled. **Reset** restores the saved text. After you save an edit, the tab shows a **Customized** badge.

## Reindex after changes

Edits and removals reach live answers only through a reindex. Each affected retriever switches to **Needs reindex**, and the amber alert counts them on both tabs. A stale retriever keeps answering from the index built before your changes.

<Frame>
  <img src={img.knowledge.documentChangeReindexLifecycle} alt="An edit or a deletion puts the retriever into Needs reindex until a reindex builds a new index, with a dashed branch where a scheduled crawl starts the build itself when the Auto badge is on." />
</Frame>

<Warning>
  A reindex applies every pending removal at once, and removals are permanent once applied.
</Warning>

<Steps>
  <Step title="Open the Retriever tab">
    Or select **Reindex** in the amber alert on the **Documents** tab.
  </Step>

  <Step title="Select Reindex on a stale retriever card">
    The **Apply pending changes** dialog opens.
  </Step>

  <Step title="Review the counts">
    The dialog counts **Changed documents** and **Pending removals**.
  </Step>

  <Step title="Select Reindex now">
    The retriever keeps answering from its current index until the new one is ready.
  </Step>
</Steps>

To reindex every stale retriever at once, select **Reindex all** in the amber alert and confirm.

## Automatic reindex after crawls

Each retriever card carries an **Auto** or **Manual** badge. The switch behind it, **Reindex on scheduled crawl updates**, lives in the retriever's **Edit retriever** dialog.

With the switch on, a scheduled crawl that changes content starts the reindex itself. Manual edits and deletions always wait for a reindex you start, whatever the switch says. So do the removals of a deleted website source.

## Locked while a retriever builds

While any retriever of the knowledge base builds its index, document changes are locked. Adding sources, editing, deleting, and manual re-fetches are all disabled. The controls show **Locked while a retriever is building** and unlock when the build finishes.

## Verify

Edit a document, reindex the retriever, and run **Test retriever** with a question the edit answers. The results show your new text.

## Related pages

* [Import a website](/docs/guides/knowledge/import-a-website)
* [Configure a retriever](/docs/guides/knowledge/configure-a-retriever)
* [Retrievers explained](/docs/guides/knowledge/retrievers-explained)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.