<aside> 📘

Agument Code Series:

How we made code search 40% faster for 100M+ line codebases using quantized vector search - Augment Code

How to build your Agent: 11 prompting techniques for better AI agents - Augment Code

📒 Integrate BM25:

🤖 Combining Embeddings with BM25 for Chunk Indexing

PostgreSQL BM25 Full-Text Search: Speed Up Performance with These Tips

📒 ANN

🤖 Implementing ANN-Based Semantic Search with Go and PostgreSQL

Optimize generative AI applications with pgvector indexing: A deep dive into IVFFlat and HNSW techniques | AWS Database Blog

https://github.com/pgvector/pgvector

📒 RAG Related:

https://blog.laisky.com/p/llm-rag/

Contextual Retrieval in AI Systems \ Anthropic

</aside>

Intro

Prompt engineering has become one of the highest-leverage skills in modern software development. The prompt you feed an agent shapes how it plans, how it uses tools, and whether it builds or breaks your pipeline. Tiny changes—an extra line of context, a clarified constraint, a reordered instruction—often produce outsized gains in accuracy and reliability. This post distills field-tested tactics we use at Augment Code to build autonomous agents that behave like disciplined teammates instead of hallucinating vibe coding tools.

The examples in the post focus on coding agents, but the techniques are generally applicable.

What is prompt engineering?

An agent’s prompt includes everything that gets supplied to the model as input. This includes various components:

Prompt engineering is the art of improving a model’s performance on a task by providing it with a better prompt. All parts of the prompt can be potentially improved with prompt engineering. For example:

How to think about the model

The model is (artificially) intelligent. Prompting a model is closer to talking to a person than it is programming a computer. The model builds a view of the world that is solely based on what’s in the prompt. The more complete and consistent that view is, the better the model’s results will be.

The model presents to us a natural language interface, that is separate from the programming language one works in. It’s useful to think of the LM interface as a separate but real abstraction layer. This interface can be used to present happy-path results, but also to alert of errors, notify of changes, etc. — to generally communicate with the model.