π About this Role
As a Software engineer, AI retrieval, you will be responsible for designing, implementing, and optimizing the AI retrieval systems that power our platform. You'll work closely with our data scientists, product managers, and other engineers to ensure that our AI models are integrated seamlessly into our applications, providing fast and accurate results. This role requires a deep understanding of software engineering principles and a strong foundation in AI and machine learning.
π¦Έπ»ββοΈYour responsibilities:
Design and implement AI retrieval systems: Develop and maintain the core AI retrieval algorithms and services that enable our platform to efficiently search and retrieve relevant content.
Optimize performance: Ensure that our AI retrieval systems are highly performant, scalable, and can handle large volumes of data and requests.
Collaborate with cross-functional teams: Work closely with data scientists, product managers, and other engineers to understand requirements, provide technical guidance, and deliver high-quality solutions.
Code quality and best practices: Write clean, maintainable, and well-documented code, adhering to best practices in software engineering.
Testing and validation: Develop comprehensive unit and integration tests to ensure the reliability and accuracy of our AI retrieval systems.
API development: Build and maintain REST and GraphQL APIs using frameworks like FastAPI and Flask to expose our AI retrieval capabilities to other services and applications.
Streaming and cancelable endpoints: Implement streaming responses and cancelable endpoints to support real-time and interactive use cases, such as model output.
Continuous improvement: Stay up-to-date with the latest developments in AI and software engineering, and continuously improve our systems and processes.
βοΈ Is this you?
Language fundamentals: Proficient in Python, with a strong understanding of data types, string manipulation, type casting and conversions.
Functions: Experienced in calling functions, using default and variable arguments, and writing lambda functions.
Virtual environments: Familiar with tools like venv, virtualenv, pipenv, and poetry for managing project dependencies.
File handling: Skilled in reading, writing, and manipulating files in Python.
Error Handling: Expert in handling errors and exceptions to ensure robust and reliable code.
Datamodels: Knowledgeable in designing and using data models to represent and manage data efficiently.
Context managers and logging best practices: Proficient in using context managers and implementing logging best practices to maintain code clarity and traceability.
Inheritance and method overriding: Experienced with object-oriented programming concepts, including inheritance and method overriding.
Magic methods: Familiar with Python's magic methods to enhance the functionality of custom classes.
Code formatting: Adheres to code formatting standards using tools like black, isort, flake8, and pylint.
Testing: Strong background in testing methodologies, including unit testing with pytest, mocking, and integration testing.
Versioning: Familiar with semantic versioning and maintaining changelogs to track changes and updates.
Data structures: Proficient in using stack, queue, and priority queue data structures (via collections) to manage and process data efficiently.
Functional programming: Experienced in functional programming concepts such as map, filter, reduce, generators, and decorators.
Async programming: Skilled in asynchronous programming using asyncio, aiohttp, async generators, and handling timeouts with wait_for.
Threading vs multiprocessing: Understands the differences and trade-offs between threading and multiprocessing, and can choose the appropriate approach for different tasks.
Memory and performance profiling: Proficient in using tools like tracemalloc and cProfile to identify and optimize memory usage and performance bottlenecks.
API development: Experienced in developing and maintaining REST and GraphQL APIs using frameworks like FastAPI and Flask.
Streaming responses and cancelable endpoints: Capable of implementing streaming responses and cancelable endpoints to support real-time and interactive use cases.
β¨ Preferred skills and experience
Machine learning experience: Familiarity with machine learning frameworks and libraries such as TensorFlow, PyTorch, or scikit-learn.
Natural Language Processing (NLP): Experience with NLP techniques and tools, such as spaCy or NLTK.
Distributed systems: Knowledge of distributed systems and experience with tools like Kubernetes or Docker.
Cloud services: Experience with cloud platforms like AWS, GCP, or Azure.
Open source contributions: Contributions to open-source projects or a strong portfolio of personal projects.
π© Benefits & perks (UK full-time employees):
Generous PTO, plus company holidays
Comprehensive medical and dental insurance
Paid parental leave for all parents (12 weeks)
Fertility and family planning support
Early-detection cancer testing through Galleri
Competitive pension scheme and company contribution
Annual work-life stipends for:
Home office setup, cell phone, internet
Wellness stipend for gym, massage/chiropractor, personal training, etc.
Learning and development stipend
Company-wide off-sites and team off-sites
Competitive compensation and company stock options