当前位置:首页>python>用 Python + Ollama 简单做一个 AI 搜索引擎(本地版 Perplexity,完整代码结构 +简单代码 + 可落地 + 配置环境说明)

用 Python + Ollama 简单做一个 AI 搜索引擎(本地版 Perplexity,完整代码结构 +简单代码 + 可落地 + 配置环境说明)

  • 2026-10-11 08:36:11
用 Python + Ollama 简单做一个 AI 搜索引擎(本地版 Perplexity,完整代码结构 +简单代码 + 可落地 + 配置环境说明)

这篇文章,尝试着想用AI做一个本地搜索:

做一个 本地 AI 搜索引擎(类似 Perplexity)

它能做三件事:

  • 输入问题

  • 从本地知识库检索

  • 用大模型生成“带理解”的答案

而且:

  •  不用 API

  • 数据不出本地

  • 可扩展


一、最终效果

用户输入:

什么是RAG?

系统输出:

RAG(Retrieval-Augmented 
Generation)是一种结合检索
和生成的技术...

二、整体架构(先理解再写代码)

核心就 4 层:

用户问题   ↓Embedding(向量化)   ↓向量检索(找相关内容)   ↓Ollama(生成答案)

一句话来说就是:

先查资料,再让 AI 组织语言


三、环境准备(很关键)


1. 电脑配置建议

最低配置:

  • CPU:4核

  • 内存:8GB

  • 硬盘:10GB+

推荐配置(体验更好):

  • CPU:8核+

  • 内存:16GB+

  • GPU(可选):NVIDIA


2. 安装 Ollama

 官网下载安装(Mac / Linux / Windows)

安装完成后:

ollama run llama3
说明:
  • 会自动下载模型

  • 成功后说明环境OK


3. 安装 Python 依赖

pip install ollama faiss-cpu sentence-transformers

四、项目结构(工程化写法)

ai_search/ ├── main.py ├── rag/ │    ├── embedding.py │    ├── vector_store.py │    ├── retriever.py │    └── generator.py ├── data/ │    └── docs.txt └── config.py

五、核心代码实现(一步一步来)


1. 简单准备知识库

# data/docs.txtRAG 是一种结合检索和生成的技术。Ollama 是一个本地运行大模型的工具。Python 是一种流行的编程语言。

2. embedding.py(文本向量化)

# rag/embedding.pyfrom sentence_transformers import SentenceTransformermodel = SentenceTransformer("all-MiniLM-L6-v2")def embed(texts):    return model.encode(texts)

3. vector_store.py(向量数据库)

# rag/vector_store.pyimport faissimport numpy as npclass VectorStore:    def __init__(self, dim):        self.index = faiss.IndexFlatL2(dim)        self.texts = []    def add(self, embeddings, texts):        self.index.add(np.array(embeddings))        self.texts.extend(texts)    def search(self, query_embedding, k=3):        D, I = self.index.search(query_embedding, k)        return [self.texts[i] for i in I[0]]

4. retriever.py(检索器)

# rag/retriever.pyfrom .embedding import embeddef retrieve(query, store):    q_emb = embed([query])    return store.search(q_emb)

5. generator.py(AI生成答案)

# rag/generator.pyimport ollamadef generate_answer(query, context):    prompt = f"""请基于以下内容回答问题:{context}问题:{query}"""    res = ollama.chat(        model="llama3",        messages=[{"role": "user", "content": prompt}],    )    return res["message"]["content"]

6. main.py(主流程)

# main.pyfrom rag.embedding import embedfrom rag.vector_store import VectorStorefrom rag.retriever import retrievefrom rag.generator import generate_answer# 1. 读取数据with open("data/docs.txt", "r", encoding="utf-8") as f:    docs = f.readlines()# 2. 向量化embeddings = embed(docs)# 3. 构建向量库store = VectorStore(len(embeddings[0]))store.add(embeddings, docs)# 4. 交互while True:    query = input(">>> ")    results = retrieve(query, store)    context = "\n".join(results)    answer = generate_answer(query, context)    print("\n答案:", answer)

六、运行效果

python main.py
输入:
>>> 什么是Ollama?

输出(示例):

Ollama 是一个可以在本地运行大
语言模型的工具...

七、这个项目所做的内容

核心不是代码,而是这三点:


1. 检索优先

先找资料,再回答

2. 本地运行

隐私安全 + 零成本

3. 可扩展

你可以加:

  • PDF解析

  • 数据库

  • Web界面


八、一些后续可以升级,继续做的点


1. 支持文件上传(PDF / Word)


2. 使用更强 embedding

bge-large

3. 加缓存(提升速度)


4. Web UI(FastAPI + 前端)


最新文章

随机文章