# Local AI setup

Forensic Evidence Viewer · Desktop setup guide · Updated September 27, 2026

Set up Ollama once, download the two required models, then process your evidence before searching. AI is optional: browsing evidence, previews and bookmarks work without it. This guide applies to the desktop viewer's local AI workflow.

## 1. Before you start

- Install Forensic Evidence Viewer from the [product downloads page](https://www.bbsoftllc.com/forensic-evidence/#downloads).
- Install Ollama **on the same computer as the viewer**. The viewer does not install or start Ollama for you.
- Use an internet connection for the initial Ollama and model downloads. Once installed, these local models can process and search evidence without a cloud AI account or API key.
- Allow additional disk space for Ollama, both models and your case data. Models are separate from the viewer download. The current `gemma4:12b` download is approximately **7.6 GB**; allow extra space for the embedding model and runtime. Download size is not a RAM requirement. See the [model listing](https://ollama.com/library/gemma4:12b) for current details.
- Processing speed depends on your CPU, GPU, available memory and the evidence. Start with a small case to check performance before processing a large collection.

## 2. Install and start Ollama

Use a current Ollama release so that it supports the required models.

### Windows

Download and run the installer from [Ollama for Windows](https://ollama.com/download/windows). Launch Ollama from the Start menu and leave it running in the background. Open a **new PowerShell or Windows Terminal** window for the commands below. If `ollama` is not recognized, close and reopen the terminal after installation. See the [official Windows instructions](https://docs.ollama.com/windows).

### macOS / Apple Silicon

Download [Ollama for macOS](https://ollama.com/download/mac), move it to **Applications**, and launch it. Complete its command-line setup if prompted, then open **Terminal**. Ollama requires macOS 14 or later and supports GPU acceleration on Apple Silicon. See the [official macOS instructions](https://docs.ollama.com/macos).

### Linux

The [official Linux installer](https://docs.ollama.com/linux) provides this terminal command:

```sh
curl -fsSL https://ollama.com/install.sh | sh
```

On a systemd installation, start and check the service:

```sh
sudo systemctl start ollama
sudo systemctl status ollama
```

If you installed without a service, run the following in a separate terminal and keep that terminal open:

```sh
ollama serve
```

Run only one server. If Ollama is already running, you do not need `ollama serve` again. Keep the default local address, `http://localhost:11434`.

## 3. Download both required models

Run these commands one at a time in PowerShell on Windows or Terminal on macOS/Linux. Wait for each download to finish successfully.

```sh
ollama pull nomic-embed-text
ollama pull gemma4:12b
ollama list
```

| Model | Used by the viewer for |
| --- | --- |
| `nomic-embed-text` | Turning document text, picture descriptions and search queries into embeddings for finding similar content. |
| `gemma4:12b` | Describing pictures and assessing which candidate files match your query. |

`ollama list` should show **both** `nomic-embed-text:latest` and `gemma4:12b`. The `:latest` suffix on the embedding model is normal. The viewer requests these exact models: installing `gemma4:26b`, another Gemma version, or a cloud model does not satisfy its `gemma4:12b` requirement.

Model information: [nomic-embed-text](https://ollama.com/library/nomic-embed-text) · [gemma4:12b](https://ollama.com/library/gemma4:12b).

You do not need to keep a separate chat session open or run an `ollama run` command. The viewer calls the models through the running local Ollama service.

## 4. Process a case and run your first search

1. Open Forensic Evidence Viewer. Create or open a **case folder**, then open the evidence sources you want to examine. If you have an older standalone JSON case, save it as a case folder first.
2. Select **AI search**, beside **Table view** and **Gallery view**. Leave **Ollama server** set to `http://localhost:11434`. Use the server address alone, without `/api` or `/v1`.
3. Leave **All open evidence** enabled to include every open source in this case, or turn it off to process the selected source. This choice also controls search scope.
4. Leave **Rebuild index** unchecked for normal use. Click **Process evidence**. The viewer walks folders recursively, extracts text from supported documents and describes supported pictures, then builds the search index. The table's filename filter and current folder do not restrict this processing.
5. Watch the stage, current file and indexed/skipped/failed counts. Picture descriptions and embeddings can take time. **Cancel operation** preserves completed items; choose **Process evidence** again to resume.
6. After processing, review the skipped and failed counts. Enter a query and click **Search**. Each query opens a results table under **AI search**.
7. Select a result to read its reason and supporting text. Use **Show in table** to return to the original item and inspect its content or picture.

Example document query:

> Find correspondence about the delivery of laboratory equipment.

Example picture query:

> Find pictures with alcohol bottles or drinking glasses.

Picture search uses AI-generated descriptions of visible content. It can miss objects or describe them incorrectly. Document extraction also depends on the file: a scanned PDF without an extractable text layer is not automatically OCRed by this workflow. Results are a shortlist to review against the original evidence, not proof that every matching file was found.

## 5. Resume work and keep your case

Save the case and keep its folder together. The case contains `case.json` and `case.sqlite`; the database holds extracted text, picture descriptions and the AI index. Evidence sources remain at their original locations, so keep them accessible when reopening the case. Treat the case folder as sensitive evidence-derived data.

**Process evidence** reuses successfully indexed, unchanged files, including pictures. It checks files again and retries failed or changed items, so a resumed run may still take time even when it avoids generating descriptions again. You do not need to reprocess the case for every search.

Use **Rebuild index** only when you deliberately want to replace the index, for example after replacing model weights behind an existing model tag. It clears derived AI data for the **whole case**, including sources outside the selected scope, then processes the chosen scope. It preserves original evidence and bookmarks. Reopening a case does not start AI processing automatically.

## 6. Troubleshooting

### HTTP 404 or a required model is missing

Run `ollama list` on the viewer's computer. Pull any missing model using the exact commands in step 3. Check **Ollama server** is `http://localhost:11434`, without `/api` or `/v1`. If both models are present, update and restart Ollama. Retry **Process evidence** to resume, or **Search** if indexing was already complete. Installing a missing model does not require rebuilding the index.

### Cannot connect, or the server is not running

Launch Ollama on Windows/macOS, or check the Linux service in step 2. Run `ollama list`: a successful model listing confirms the local server responds. An empty listing means models still need downloading. If `ollama serve` reports that the address is already in use, another server may already be running; check it with `ollama list` before starting anything else.

### Processing is slow or a request times out

The first request may need to load a model. New pictures each require a description, so a large collection can take hours. While processing, inspect model placement with:

```sh
ollama ps
```

The **PROCESSOR** column shows CPU, GPU or mixed placement. CPU processing can be much slower; substantial system or unified memory alone does not guarantee GPU use or fast inference. Close other memory-intensive applications and check Ollama's [GPU guidance](https://docs.ollama.com/gpu) and [GPU status explanation](https://docs.ollama.com/faq#how-can-i-tell-if-my-model-was-loaded-onto-the-gpu). An empty `ollama ps` result when idle is normal.

Keep the computer awake during processing. After a timeout, check that Ollama responds, then retry the interrupted operation. Completed index entries remain saved. Avoid **Rebuild index** when you only want to resume.

### Search returns no results or misses a file

Confirm that processing finished, check the skipped and failed counts, and verify **All open evidence** or the selected source matches what you want to search. Unsupported or unreadable files, documents without extracted text, and pictures without a completed description cannot contribute searchable content. Try a simpler query about the content you expect to see, and inspect the original evidence when coverage matters.

### Need more help?

Send your operating system, viewer version, Ollama version (`ollama --version`), exact error and current processing stage to [support@bbsoftllc.com](mailto:support@bbsoftllc.com). Do not email evidence files. Review filenames, paths and any diagnostic output for sensitive information before sharing it.

## Local processing and model storage

The viewer sends extracted text, resized pictures and queries to Ollama on the same computer. The required model tags above run locally; no cloud AI subscription is needed for this workflow. Ollama model downloads are stored separately from each case and are shared across cases. To move the model storage location, follow [Ollama's model storage instructions](https://docs.ollama.com/faq#where-are-models-stored), including restarting Ollama after configuration changes.

You do not need to expose Ollama to your LAN or change its address to `0.0.0.0`. The viewer's server setting accepts local loopback addresses.
