从1000份到10份:用ollama-python构建AI简历筛选神器
【免费下载链接】ollama-python 项目地址: https://gitcode.com/GitHub_Trending/ol/ollama-python
你是否还在为成百上千份简历人工筛选而头疼?是否担心错过优秀候选人或误判合适人选?本文将带你使用ollama-python构建一个本地化AI简历筛选工具,无需复杂配置即可实现简历自动评分、关键词匹配和候选人排序,让HR效率提升10倍。读完本文你将掌握:
- 如何利用嵌入(Embedding)技术实现文本相似度计算
- 完整的简历筛选应用代码实现
- 本地部署与批量处理优化技巧
核心原理:AI如何"读懂"简历
嵌入技术(Embedding)基础
嵌入(Embedding)是将文本转换为数值向量的过程,使计算机能够理解文本语义。ollama-python提供了简单的嵌入接口,如examples/embed.py所示:
from ollama import embed
response = embed(model='llama3.2', input='Hello, world!')
print(response['embeddings'])
这段代码通过调用ollama._client.py中的embed方法(第368-389行),将文本转换为可计算的向量。在简历筛选场景中,我们正是利用这一技术将简历与职位描述转换为向量,通过计算向量相似度来评估匹配程度。
筛选流程设计
简历筛选系统主要包含三个步骤:
- 数据预处理:提取简历文本信息,清洗格式
- 向量计算:使用嵌入模型生成简历和职位描述向量
- 匹配排序:计算相似度并按分数排序
实现步骤:构建你的简历筛选工具
环境准备与依赖安装
首先克隆项目仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/ol/ollama-python
cd GitHub_Trending/ol/ollama-python
pip install -r requirements.txt
确保已安装Ollama并下载合适的模型:
ollama pull llama3.2
核心代码实现
创建resume_screening.py文件,实现简历筛选核心功能:
import os
import docx2txt
from ollama import embed
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
class ResumeScreening:
def __init__(self, model='llama3.2'):
self.model = model
def extract_text_from_docx(self, file_path):
"""提取Word文档文本"""
return docx2txt.process(file_path)
def get_embedding(self, text):
"""获取文本嵌入向量"""
response = embed(model=self.model, input=text)
return response['embeddings'][0]
def calculate_similarity(self, text1, text2):
"""计算文本相似度"""
embedding1 = [self.get_embedding(text1)]
embedding2 = [self.get_embedding(text2)]
return cosine_similarity(embedding1, embedding2)[0][0]
def screen_resumes(self, job_description, resume_dir):
"""批量筛选简历"""
results = []
for filename in os.listdir(resume_dir):
if filename.endswith('.docx'):
resume_path = os.path.join(resume_dir, filename)
resume_text = self.extract_text_from_docx(resume_path)
similarity = self.calculate_similarity(job_description, resume_text)
results.append({
'filename': filename,
'similarity': similarity,
'score': round(similarity * 100, 2)
})
# 按相似度排序
return sorted(results, key=lambda x: x['similarity'], reverse=True)
# 使用示例
if __name__ == "__main__":
screener = ResumeScreening()
job_desc = """职位描述:
要求:Python开发经验,熟悉机器学习,有NLP项目经验
职责:开发AI工具,数据处理,模型优化"""
resumes = screener.screen_resumes(job_desc, 'resumes/')
print("筛选结果:")
for idx, res in enumerate(resumes[:10], 1):
print(f"{idx}. {res['filename']} - 匹配度:{res['score']}%")
关键功能解析
- 文本提取:使用
docx2txt库提取Word文档内容,支持大多数简历格式 - 嵌入计算:通过ollama.embed方法生成文本向量
- 相似度计算:使用余弦相似度算法评估简历与职位描述匹配程度
- 批量处理:遍历简历目录,自动处理所有文档并排序
优化与部署
性能优化技巧
- 模型选择:对于简历筛选任务,推荐使用较小的嵌入模型如
all-minilm或bge-small,平衡速度和精度 - 批量处理:修改代码支持批量嵌入请求,如docs/batch_embedding_guide.md所述
- 缓存机制:对已处理的简历向量进行缓存,避免重复计算
Docker部署方案
项目提供了Docker配置文件,可以快速部署为服务:
docker-compose up -d
docker-compose.yml配置了完整的运行环境,包括Ollama服务和应用程序,适合在企业内部服务器部署使用。
应用扩展:不止于筛选
高级功能扩展
- 关键词提取:结合examples/structured-outputs.py提取简历中的关键信息(技能、经验、教育背景)
- 自动评分:使用生成模型对简历各维度进行评分和评语生成
- 多轮对话:集成examples/chat-with-history.py实现与AI助手讨论候选人资格
完整工作流建议
通过这种人机协作模式,既能利用AI处理重复性工作,又能保留HR的专业判断,实现最佳筛选效果。
总结与下一步
本文介绍了如何使用ollama-python构建本地化AI简历筛选工具,通过嵌入技术实现简历自动匹配。核心优势包括:
- 本地化部署,保护简历数据隐私
- 无需API密钥,降低使用成本
- 可定制化程度高,适应不同公司需求
下一步建议:
- 完善UI界面,开发Web版应用
- 增加简历解析准确性,支持PDF和图片格式
- 集成面试问题生成功能,如examples/generate.py所示
立即尝试构建你的AI筛选工具,让招聘工作更高效、更精准!
【免费下载链接】ollama-python 项目地址: https://gitcode.com/GitHub_Trending/ol/ollama-python
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



