AI项目:用RAG做智能问答助手

非常入门级的项目,适合出入AI的小白跟做

一、这个项目能做什么?

你输入一个 GitHub 仓库的 URL,系统会:

  1. gitingest 把整个仓库转成 Markdown 文本
  2. LlamaIndex 对文本做向量化索引(Embedding + VectorStore)
  3. 用本地 Ollama 模型回答你关于这个仓库的任何问题

比如你可以问:

  • "这个项目的核心架构是什么?"
  • "main.py 里的 process 函数做了什么?"
  • "这个项目用了哪些依赖?"

二、技术栈一览

组件 工具 作用
前端 Streamlit 聊天界面
RAG 框架 LlamaIndex 文档索引+检索+问答
仓库解析 gitingest GitHub 仓库→Markdown
本地大模型 Ollama + Llama 3.2 推理引擎,无需 API
向量模型 BAAI/bge-large-en-v1.5 文本嵌入

三、环境搭建(10 分钟)

Step 1:安装 Ollama

https://ollama.com 下载安装,然后拉模型:

ollama pull llama3.2

验证:

ollama list
# 应该看到 llama3.2

Step 2:安装 Python 依赖

pip install gitingest llama-index llama-index-llms-ollama \
  llama-index-embeddings-huggingface streamlit python-dotenv

Step 3:克隆项目

git clone https://github.com/patchy631/ai-engineering-hub.git
cd ai-engineering-hub/github-rag

四、核心代码解析

整个项目只有一个核心文件 app.py(约 180 行),我们拆解关键部分:

(1)仓库解析——把 GitHub 仓库变成文本

from gitingest import ingest

summary, tree, content = ingest(github_url)
# summary: 仓库概要
# tree: 文件目录树
# content: 所有代码拼接成的 Markdown

一行代码就能把整个仓库抓下来转成可索引的文本,这是整个 RAG 管线的数据源。

(2)向量索引——让 AI "记住" 代码

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.core.node_parser import MarkdownNodeParser

# 加载文档
loader = SimpleDirectoryReader(input_dir=content_path)
docs = loader.load_data()

# 用 Markdown 格式切分
node_parser = MarkdownNodeParser()

# 创建向量索引
index = VectorStoreIndex.from_documents(
    documents=docs,
    transformations=[node_parser],
    show_progress=True
)

这里做了三件事:读文件 → 按 Markdown 标题切块 → 用 Embedding 模型编码成向量存入索引。

(3)问答引擎——检索 + 生成

qa_prompt = """
You are an AI assistant specialized in analyzing GitHub repositories.

Repository structure:
{tree}

Context information:
{context_str}

Query: {query_str}
Answer: """

query_engine = index.as_query_engine(streaming=True)
query_engine.update_prompts({
    "response_synthesizer:text_qa_template": PromptTemplate(qa_prompt)
})

LlamaIndex 会自动:用户提问 → 向量检索最相关的代码片段 → 拼上 Prompt → 发给 Ollama 生成回答。

(4)Streamlit 聊天界面

if prompt := st.chat_input("What's up?"):
    response = query_engine.query(prompt)
    for chunk in response.response_gen:
        full_response += chunk  # 流式输出

五、运行效果

streamlit run app_local.py

浏览器会打开 localhost:8501,在侧边栏输入仓库 URL,点 "Load Repository",然后就可以聊天了。

六、可以怎么改进?(面试加分项)

如果你想在这个基础上做项目展示或面试作品,推荐几个方向:

  1. 换更强的模型:把 llama3.2 换成 qwen3 或 deepseek-v4,效果显著提升
  2. 加 Reranker:在检索后加一层重排序(llama-index-postprocessor-cohere-rerank),提升回答精准度
  3. 支持多仓库对比:同时加载两个仓库,问"A 和 B 的架构有什么区别"
  4. 加缓存:用 Redis 缓存已解析的仓库,避免重复下载
  5. 部署上线:用 Streamlit Cloud 或 HuggingFace Spaces 免费部署

七、学到了什么?

通过这个项目,你实际练习了:

  • RAG 全流程:数据采集 → 文本切分 → 向量化 → 检索 → 生成
  • LlamaIndex 核心 API:VectorStoreIndex、QueryEngine、PromptTemplate
  • 本地大模型部署:Ollama 安装和调用
  • Streamlit 快速原型:聊天界面搭建

这些都是 AI 工程师面试的高频考点,动手做一遍比看十篇八股文有用。

项目地址https://github.com/patchy631/ai-engineering-hub/tree/main/github-rag

#AI项目实战#
全部评论
项目运行起来为什么会输入任何正确且内存不大的仓库url都会显示Failed to process repository:
点赞 回复 分享
发布于 今天 19:55 广东

相关推荐

简历很重要,很多同学的简历现在都是偏陈列一些概念,有的时候技术能力都够的,项目也做了不少,但是不会提现在简历上。你做了8分,可以包装优化成10分,但是很多同学的项目写的只有五分。下面就给大家一些可以直接参考复用的话术,需要更定制的简历优化等可以私我。一、任务规划 / Agent 核心能力点:多步任务执行能力•设计基于 ReAct / Plan-and-Execute 的 Agent 执行框架,实现复杂任务的自动分解、逐步执行与结果整合•构建支持多轮决策的任务状态机,提升复杂流程下的执行稳定性与可控性⸻点:决策与路由•实现基于模型推理 + 规则约束的任务路由机制,动态选择工具调用路径•设计 tool routing 策略,提升工具选择准确率并减少无效调用⸻二、工具调用(Tool Use)点:工具链设计•封装统一工具调用接口,支持搜索、数据库查询、API 调用等多种能力扩展•构建可插拔工具层,支持快速接入业务系统(如 CRM / 工单系统 / 数据平台)⸻点:调用可靠性•引入参数校验与 schema 约束,显著降低工具调用错误率•设计工具调用重试与 fallback 机制,提升任务成功率⸻三、RAG + Agent 结合(高频加分项)点:检索增强•搭建 RAG 检索模块,结合向量检索与语义重排提升召回质量•将检索结果作为 agent 决策上下文,提高复杂问答准确率⸻点:协同架构(重点包装)•设计 RAG + Agent 协同架构,将“检索-推理-执行”解耦,提升系统可扩展性与稳定性•优化长上下文场景下的信息选择策略,降低噪声对决策的干扰⸻四、记忆(Memory)与上下文管理点:多轮对话能力•实现基于短期记忆 + 长期记忆的上下文管理机制,支持复杂多轮任务•设计 memory 压缩与摘要策略,降低 token 消耗并提升响应效率⸻点:用户状态•构建用户级上下文存储,实现个性化任务执行与历史行为复用⸻五、稳定性 / 防“翻车”(非常关键)点:防幻觉 / 防乱调用•通过输出约束(JSON schema / function schema)减少模型幻觉与格式错误•引入结果校验与二次确认机制,提高关键任务可靠性⸻点:异常处理•设计超时控制、异常捕获与降级策略,保障系统在不稳定情况下仍可运行•构建 fallback 逻辑(规则/模板回复),避免任务完全失败⸻六、评估与数据驱动(很多人不会写,但很加分)点:评估体系•构建 Agent 评估指标体系,包括任务完成率、工具调用准确率、响应延迟与 token 成本•设计离线评测集与自动化评估流程,支持模型与策略迭代⸻点:优化闭环•基于日志分析持续优化 prompt 与工具策略,提升整体执行效果⸻七、性能优化(工程感直接拉满)点:延迟 & 成本•优化 prompt 结构与上下文长度,使平均响应时间下降 X%•引入缓存与结果复用机制,降低 token 成本 X%⸻点:并发与吞吐•设计异步执行与任务队列,提高系统并发处理能力•支持多任务并行执行,提升复杂流程处理效率⸻八、工程化能力(决定你是不是“能进组的人”)点:可观测性•构建日志与 tracing 系统,记录 agent 决策路径与工具调用链路•实现任务级监控,支持问题快速定位与回溯⸻点:系统化落地•将 agent 服务化部署,提供标准 API 接口供业务调用•支持模块化扩展,降低后续功能迭代成本⸻九、业务价值(一定要写,不然像玩具)点:效率提升•将原本依赖人工处理的流程自动化,日均节省 X 小时人工成本•提升任务处理效率 X%,缩短响应时间 X%⸻点:场景覆盖•支持 X 类业务场景(如客服、数据查询、报告生成等),提升系统使用率⸻十、直接可用的“完整项目描述”(可复制)大家可以直接用这个版本👇项目:智能 Agent 平台(LLM + Tool Use + RAG)•设计并实现基于任务分解与工具调用的 Agent 执行框架,支持多步推理与复杂流程自动化•构建 RAG + Agent 协同架构,将检索、决策与执行解耦,提升复杂问题处理能力•封装统一工具接口,接入搜索、数据库与业务 API,实现多场景任务执行•引入参数校验、重试机制与 fallback 策略,显著提升任务执行稳定性•实现多轮对话记忆管理与上下文压缩,优化长任务下的性能与成本•构建评估体系(任务完成率 / 延迟 / token 成本),驱动持续优化成果:•任务完成率提升 XX%•平均响应时间降低 XX%•人工介入率下降 XX%
肖先生~:牛客多推送一点这样的文章给我
AI求职记录
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务