punchy
Stay foolish Stay hungry

多模态RAG学习总结

2025-05-10 LLM

python知识

__init__.py的作用

  • 该文件的存在最基本的作用是将当前目录标记为包,这样python解释器就知道这个目录及目录包含的文件应该被视为包
  • 初始化包:当该包被导入的时候,会首先执行__init__.py,这样我们可以在其中写一些代码来做初始化
  • 控制包的导入:一个包内部会有很多子模块,通过在__init__.py中导入子模块,我们可以控制from packege import *运行时,哪些模块会被导入。
  • 包的命名空间管理:通过在__init__.py导入子模块,可以提供给外部一个精心设计的接口,比如在如下结构中:
1
2
3
4
5
my_package/

├── __init__.py
├── submodule1.py
└── submodule2.py

__init__.py若有代码为:from .submodule1 import ClassA,则我们可以直接使用:from my_packege import ClassA来将classA方法导入而无需惯性其在哪一个子模块中。

配置文件

yaml是一种配置文件格式,后缀为yaml。使用它可以轻松的将数据构建为多种数据结构。比如层级字典:

1
2
3
key:
key1: value1 ## 冒号后面一定要加空格
key2: value2

上述格式将数据构建为:key:{key1: value1, key2: value2}。还可以构建数组,比如:

1
2
3
4
5
key:
key1:
- value1.1
- value2.2
- value3.3

上述格式将数据构建为:key:{key1: [value1.1, value2.2, value3.3]}

如何将配置文件导入程序,如下:

1
2
3
4
5
6
import yaml

with open("config.yaml", 'r', encoding='utf-8') as f:
config = yaml.safe_load(f)

config[key][key2] = value2

FastAPI

FastAPI是一个用python写的轻量级的web框架,用来快速构建web服务或者API接口。而API全名为(Application Programming Interface),应用程序窗口,可以理解为一个“服务窗口”,别人可以使用URL+参数调用你的程序,让你返回结果。

程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from fastapi import FastAPI
import uvicorn

app = FastAPI() ## 创建一个web应用对象,相当于一个“门面”,所有的API接口都会挂在这个app上

@app.get("/") ## 装饰器,意思为当用户通过GET请求访问/路径时,执行下方函数 root()
def root():
return {"message": "Hello World"}

## 定义一个路径带变量的接口
## 用户在浏览器输入:http://localhost:8000/say/hello?q=123
## 会触发say函数,并返回{"data": "hello", "item": 123}
@app.get("/say/{data}")
def say(data: str,q: int):
return {"data": data, "item": q}

if __name__ == "__main__":
## uvicorn是Web服务启动器,运行API服务
uvicorn.run(app, host="0.0.0.0", port=8000)

访问根路径时(http://0.0.0.0:8000),运行root函数,运行http://localhost:8000/say/hello?q=123,运行say函数。

例子:https://stu.xjtu.edu.cn/coremail/XT/index.jsp?sid=CAQjaSyyGGpPmsymdKakflOnYAGOVSHw#mail.welcome ,这个链接可以拆分成以下几个部分来理解:

  • https://:表示这是一个安全的 HTTP 连接(加密的)
  • stu.xjtu.edu.cn:域名,表示西安交通大学的学生系统子域名
  • /coremail/XT/index.jsp:路径,表示访问服务器上的某个具体资源(一个 Java Web 页面)
  • ?sid=CAQjaSyyGGpPmsymdKakflOnYAGOVSHw:以 ? 开头,是给服务器“传参数”的。形式是 键=值,这里:
    • 键:sid
    • 值:CAQjaSyyGGpPmsymdKakflOnYAGOVSHw
      -#mail.welcome: # 后面是页面锚点,表示跳转到网页中的某个位置。它不会发送给服务器,而是 浏览器自己用 来定位页面中的一段内容或模块(如“欢迎页”)。

如果其使用的是FastAPI,那么函数可能如下显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@app.get("/coremail/XT/index.jsp", response_class=HTMLResponse)
def read_index(sid: str):
# 检查 sid 合法性,简单模拟逻辑
if sid == "CAQjaSyyGGpPmsymdKakflOnYAGOVSHw":
return """
<html>
<body>
<h1>Welcome to Coremail</h1>
<div id="mail.welcome">This is the welcome section</div>
</body>
</html>
"""
else:
return "<h1>Invalid session</h1>"

git版本控制

一个项目初步构建完,要上传到github,或者要使用git进行版本控制时,运行命令如下:

  • git init:初始化git
  • 根目录下新建文件.gitignore,确定哪些文件不需要被版本控制,文件中这样写:
    1
    2
    data/
    __pycache__
    • 表示data下的文件不会被版本控制, 编译缓存也不会被版本控制
  • git add .
  • git commit -m "first commit"
  • git add remote ....
  • git branch -M main
  • git push -u origin main

如果一不小心把不想被跟踪的文件add了,需要先将其删除再设置.gitignore才会有效。运行:

  • git rm -r --cached data:将data下的文件都取消跟踪
  • git rm --cached config.yaml:将配置文件取消跟踪
  • git ls-files:查看被取消跟踪的文件
  • git commit -m "adfa":最后提交
  • git push: 第二次push时即可不用指定远程仓库和默认分支

前端知识

在前端设计中,一般有三个文件分别是:index.html, style.css, script.js,三者的作用各自不同,共同构成了前端交互。作用如下:

  • index.html:其使用的是html语言,主要负责是什么,即前端漆面上有什么内容,有什么结构,它定义了页面上应该有哪些元素
  • style.css: 使用css语言,主要负责怎么样, 即前端的这些元素的外观,布局,样式等,它定义了页面上的元素看起来应该是什么样子的
  • script.js:使用javascript语言,主要负责怎么做,负责处理交互性,动态的内容更新,API通信等等。

三者之间的文件结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
project-root/
├── index.html
├── assets/
│ ├── css/
│ │ └── style.css
│ ├── js/
│ │ └── script.js
│ ├── images/
│ │ └── logo.png
│ └── fonts/
│ └── myfont.woff2
└── (其他可能的文件夹, 如 src/, components/ 等,取决于项目类型)

index.html中的链接方式:

1
2
3
4
5
6
<head>
<link rel="stylesheet" href="assets/css/style.css">
</head>
<body>
<script src="assets/js/script.js"></script>
</body>

多模态模型

BLIP2

Author: 武丢丢

Link: http://example.com/2025/05/10/%E5%A4%9A%E6%A8%A1%E6%80%81RAG%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
CAD_plugin总结
NextPost >
周总结4.30
CATALOG
  1. 1. python知识
    1. 1.1. __init__.py的作用
    2. 1.2. 配置文件
    3. 1.3. FastAPI
    4. 1.4. git版本控制
    5. 1.5. 前端知识
  2. 2. 多模态模型
    1. 2.1. BLIP2