---
title: "Semantic Search"
description: "Free semantic search tool. Paste any text — notes, FAQs, product descriptions — and search it by meaning using a Gemini embedding index. This is the Pixeltable RAG building block (embed → index → similarity) in one page."
keywords:
  - semantic search
  - ai text search
  - search by meaning
  - vector search demo
  - embedding search
url: "https://pixeltable.com/tools/semantic-search"
---

# Semantic Search

Free semantic search tool. Paste any text — notes, FAQs, product descriptions — and search it by meaning using a Gemini embedding index. This is the Pixeltable RAG building block (embed → index → similarity) in one page.

Free online tool by Pixeltable. Run it at https://pixeltable.com/tools/semantic-search (interactive, no sign-up).

## Features

- Gemini embeddings
- Similarity ranking
- Bring your own text
- Free

## FAQ

### How is this different from keyword search?

It matches meaning, not exact words. A query like "how do I get a refund" can surface a passage about "returning a purchase" even with no shared keywords.

### How does it work under the hood?

Each line or paragraph becomes a row in a Pixeltable table with a Gemini embedding index. Your query is embedded and ranked with .similarity() — the same pattern that powers RAG.

### Is my text stored?

Your corpus is scoped to your browser session and is not shared with other visitors.


## Fact sheet

Last updated 2026-09-23.

| Fact | Value |
| --- | --- |
| Modality | Text |
| Inputs | Your notes plus a meaning query |
| Outputs | Passages ranked by similarity |
| Computed column | Gemini embed_content index; query with column.similarity(string=...) |
| What updates | A new or changed row recomputes only that row. Unchanged rows stay cached. |
| Canonical doc | [gemini.embed_content](https://docs.pixeltable.com/sdk/latest/gemini#udf-embed_content) |

```python
import pixeltable as pxt
from pixeltable.functions.gemini import embed_content

TableModel = pxt.model_base()
text_embed = embed_content.using(model='gemini-embedding-001')

class Notes(TableModel, name='notes'):
    text: pxt.String

    __indexes__ = [
        pxt.EmbeddingIndex(text, embedding=text_embed),
    ]

# Query with Notes.text.similarity(string='how do I get a refund')
```