The best VIVET hoodie outfits combine comfortable fits with simple streetwear pieces. A hoodie can be styled with jeans, sweatpants, cargo pants, shorts, sneakers, and jackets. The VIVET Beginner Hoodie is especially useful because its heavyweight construction gives an outfit more structure. You can keep the rest of the outfit simple or build a larger oversized silhouette around it. Different trouser fits can completely change how the hoodie looks. The best outfit is usually the one that matches your preferred proportions and everyday routine. How Do You Build a VIVET Hoodie Outfit? Start with the hoodie and decide what type of silhouette you want. Straight jeans can create a balanced casual outfit, while baggy denim creates a more relaxed appearance. Cargo pants add a stronger streetwear feel, while sweatpants keep the outfit focused on comfort. For more VIVET clothing and hoodie styling ideas visit https://vivetofficial.com.co/ Once you choose the trousers, finish the outfit with suitable sneakers or boots. A cap, bag, or simple jacket can then add another layer without making the outfit complicated. What Is the Best VIVET Hoodie Outfit With Jeans? A VIVET hoodie with jeans is one of the easiest combinations for everyday wear. Straight-leg jeans create a clean balance with a relaxed hoodie. Baggy jeans can give the outfit a wider streetwear silhouette, especially when paired with a larger hoodie. Blue denim works well with darker hoodies, while black jeans can create a more coordinated appearance. Simple sneakers can keep the outfit casual and easy to wear. This combination works well for everyday activities, weekends, and casual meetups. How Do You Style a VIVET Hoodie With Sweatpants? A VIVET hoodie and sweatpants make a natural combination when comfort is the priority. The relaxed shape of sweatpants works well with a heavyweight hoodie. You can use similar shades for a coordinated outfit or choose contrasting colors for more separation between the pieces. The VIVET Beginner Hoodie can also be paired with the Beginner Sweatpant for a complete matching look. Sneakers are an easy choice for finishing the outfit. Keep additional accessories minimal to maintain the relaxed feel. How Do You Style a VIVET Hoodie With Cargo Pants? Cargo pants can give a VIVET hoodie a more defined streetwear appearance. Relaxed cargos work particularly well with a heavyweight or oversized hoodie. Black, grey, olive, and other muted shades are easy to coordinate with different hoodie colors. Sneakers can keep the outfit casual, while boots can give it a heavier appearance. Since cargo pants already have several details, you do not need many accessories. A simple hoodie, relaxed cargos, and clean footwear can create a complete outfit. What Is the Best VIVET Beginner Hoodie Outfit? The VIVET Beginner Hoodie can be used as the foundation for several different outfits. One of the easiest combinations is the hoodie with relaxed jeans and simple sneakers. You can choose the matching Beginner Sweatpant when you want a coordinated casual look. Cargo pants are another option when you want a more traditional streetwear silhouette. A cap or compact bag can add some extra detail without taking attention away from the hoodie. The best combination depends on whether you prefer clean proportions or a looser fit. How Do You Style an Oversized VIVET Hoodie? An oversized VIVET hoodie works best when the rest of the outfit supports its proportions. Wide-leg jeans, relaxed cargos, and loose sweatpants can create a balanced silhouette. You do not need every piece to be oversized because too much volume can make the outfit feel heavy. Clean sneakers can provide a simple finish and keep the look grounded. Small accessories can add personality without competing with the hoodie. The goal is to make the oversized fit look intentional rather than simply too large. What Shoes Look Best With VIVET Hoodie Outfits? Sneakers are the easiest footwear option for most VIVET hoodie outfits. Clean white sneakers can create contrast with darker clothing, while black sneakers work well with monochrome combinations. Chunky sneakers can support wider jeans and oversized hoodies. Boots can add more weight when you are wearing cargo pants or heavier outerwear. The footwear should match the proportions of the rest of the outfit. Choosing simple shoes can also keep the hoodie as the main focus. How Do You Style a VIVET Hoodie With Shorts? A VIVET hoodie can also work with shorts when the weather is comfortable. Relaxed shorts can balance a loose hoodie while keeping the outfit casual. Simple sneakers are usually enough to complete this combination. If the hoodie has an oversized fit, slightly wider shorts can help maintain balanced proportions. Neutral colors make this outfit easy to coordinate. It is a useful option for mild weather when you want a relaxed streetwear appearance without full-length trousers. Can You Wear a VIVET Hoodie With a Jacket? A VIVET hoodie can work as a middle layer underneath a jacket during cooler weather. Choose outerwear with enough room around the shoulders and body so the hoodie does not feel compressed. A cargo jacket can create a practical streetwear combination, while simple outerwear can give the outfit a cleaner appearance. Jeans or cargo pants can complete the lower half of the outfit. Keep the colors connected so the layers look like one complete combination. This also allows the same hoodie to work across different seasons. What Is the Best VIVET Hoodie Outfit for Everyday Wear? For everyday wear, a VIVET hoodie with straight-leg jeans and sneakers is a reliable starting point. It gives you a relaxed appearance without creating excessive volume. You can switch the jeans for cargo pants when you want more streetwear character. Sweatpants are useful when comfort matters more than structure. During cooler weather, add a relaxed jacket over the hoodie. These simple combinations are easy to repeat while giving you several different styling options. How Do You Create a Minimal VIVET Hoodie Outfit? A minimal VIVET hoodie outfit should focus on a few well-matched pieces. Start with the hoodie, straight or relaxed trousers, and simple sneakers. Neutral shades such as black, grey, white, cream, and muted tones are easy to combine. Avoid using too many graphics or accessories if you want the hoodie to remain the main focus. A simple cap or small bag can add enough detail without making the outfit busy. Good proportions and clean footwear can make a minimal outfit feel complete. How Do You Create a Strong Streetwear VIVET Hoodie Outfit? For a stronger streetwear look, choose relaxed trousers with a larger hoodie. Baggy jeans, cargo pants, and wide sweatpants can all work well. Chunky sneakers or boots can add more visual weight to the outfit. You can also introduce a cap, crossbody bag, or jacket for additional detail. Keep the color palette controlled so the outfit does not become too busy. Combining relaxed proportions with simple accessories can create a modern streetwear silhouette. What Colors Work Best With VIVET Hoodies? Neutral colors are usually the easiest starting point for VIVET hoodie outfits. Black, grey, white, cream, beige, and muted shades can work with many different trousers. Blue denim provides a classic contrast with darker hoodies. Black trousers can create a darker coordinated appearance, while lighter trousers can make the hoodie stand out more. If the hoodie already has a noticeable color, keep the other pieces relatively simple. Matching similar shades can also create a clean monochrome outfit. How Do You Style a VIVET Hoodie for Cold Weather? A VIVET hoodie can become the main middle layer during colder weather. Wear a T-shirt underneath and add a relaxed jacket over the hoodie when additional warmth is needed. Jeans, cargos, and sweatpants can all work depending on the outfit. Boots can add more weight, while sneakers can keep the combination more casual. Make sure the outer jacket has enough space for the hoodie underneath. This allows you to stay comfortable without losing the shape of the outfit. What Accessories Work With VIVET Hoodie Outfits? Accessories should add detail without overwhelming the hoodie. A simple cap can reinforce the casual streetwear appearance. A crossbody bag can be useful with relaxed outfits while adding another visual element. Sunglasses can work well for outdoor styling, while a watch or small jewelry pieces can add subtle detail. You can also use a simple bag when traveling or carrying everyday items. Choose only a few accessories so the outfit remains balanced. How Do You Style a VIVET Hoodie for a Clean Look? A clean VIVET hoodie outfit can be built around a regular relaxed fit, straight-leg jeans, and simple sneakers. Keep the color palette neutral and avoid unnecessary layers. A small accessory can add personality while keeping the overall outfit simple. Straight or moderately relaxed denim usually works well because it does not compete with the hoodie. Clean footwear can make the outfit feel more complete. This approach is useful when you want casual streetwear without an oversized appearance. How Do You Choose the Right VIVET Hoodie Fit? The right hoodie fit depends on the proportions of the rest of your outfit. A regular relaxed hoodie works well with straight jeans and moderately wide trousers. An oversized hoodie can pair naturally with baggy denim, loose cargos, and wide sweatpants. Consider chest width, shoulder room, sleeve length, and body length before choosing your size. If you want a larger silhouette, sizing up can provide additional room. The complete outfit should determine the fit rather than the hoodie being considered on its own. What Is the Best VIVET Hoodie Outfit for Beginners? If you are new to VIVET streetwear, start with a simple combination that is easy to adjust. A VIVET hoodie with straight jeans and sneakers is a good everyday starting point. You can then
LLM Wiki v6 — 답변·피드백·사람의 평가를 저장한다 잘못된 답변을 나중에 검토할 수 있도록, 당시의 근거와 사용자의 지적, 사람이 확인한 결과를 남긴다. v4까지 Wiki 구축·질의응답·원본 변경에 따른 갱신을 구현했고, v5에서는 성능과 안정성의 개선 방향을 정리했다. v6에서는 답변마다 기록을 남기고, 별도 호출로 사용자 피드백과 사람의 평가를 저장하는 기능을 추가했다. 이 글의 중심 범위는 evaluations 테이블에 사람이 작성한 평가를 저장하는 단계까지다. 평가를 바탕으로 Wiki를 갱신할지, 탐색·답변 정책을 바꿀지 결정하고 적용하는 연결은 이후 작업이다. 사용자가 질문 ↓ 서버: answer_id 발급 → 답변 생성 → answers에 기록 저장 → 답변 반환 ↓ 개발자·클라이언트·에이전트: 피드백 API 또는 MCP 도구 호출 ↓ 서버: feedback에 사용자 피드백 저장 ↓ 사람: 접수된 피드백을 검토하며 당시 답변·원문을 대조 ↓ 개발자·검토자: 평가 API 또는 스크립트로 검토 결과 제출 ↓ 서버: evaluations에 평가 저장 피드백 저장과 평가 저장은 각각 별도 호출이다. 피드백이 들어온 뒤 원인을 분석하고 평가를 작성하는 과정은 사람이 수행한다. 1. 질문에 답할 때 당시의 근거도 함께 저장한다 다음은 동작을 설명하기 위한 가상 사례다. 실제 비교 실험의 결과나 현재 저장소의 최신 배포 정책을 뜻하지 않는다. 현재 원문에는 배포 승인자가 팀 리드와 SRE 온콜 이라고 적혀 있다. 과거 원문에는 팀 리드 만 적혀 있다. 시스템이 과거 문서를 참고해 잘못 답했다고 가정한다. 사용자: “지금 배포하려면 누구 승인이 필요해?” 시스템: “팀 리드의 승인이 필요합니다.” POST /answer 는 요청을 받으면 answer_id 를 발급한다. 답변을 생성한 뒤 질문·답변·출처·실행 기록을 answers 테이블에 저장하고, 그다음 사용자에게 답변과 ID를 반환한다. 설명을 위해 이 답변의 ID를 A001 이라고 부르겠다. 실제 API에서는 발급받은 UUID를 사용한다. answers에 저장된 A001의 내용 — 설명을 위해 요약한 형태 질문: 지금 배포하려면 누구 승인이 필요해? 답변: 팀 리드의 승인이 필요합니다. 참고한 근거: 과거 배포 가이드의 “승인자: 팀 리드” 실행 기록: 검색 결과 또는 읽은 Wiki 경로, 모델 호출, 시간·토큰 등 아직 사용자가 오류를 지적하지 않았어도 기록을 저장한다. 나중에 같은 질문을 다시 실행하면 다른 문서를 찾거나 다른 답을 만들 수 있으므로, 사용자가 실제로 받은 답변과 당시의 근거 를 보존해야 하기 때문이다. 기본 저장소는 .local/evaluation.sqlite3 이다. 기록에는 요청으로 받은 대화 이력, 응답 상태, 코드 해시, Wiki 구축 지문 또는 검색 문서의 색인 해시도 포함된다. 저장된 답변을 다음 대화의 근거로 자동 주입하지는 않는다. 구현: 답변 API 의 answer() , 기록 저장소 의 AnswerStore.save() . 2. 사용자의 지적은 별도 호출로 feedback에 저장한다 사용자가 답변을 보고 문제를 발견한다. 사용자: “틀렸어. SRE 온콜 승인도 필요한데 빠졌잖아.” 이 말 자체가 자동으로 DB에 저장되는 것은 아니다. 개발자나 클라이언트가 피드백 API를 호출하거나, 대화 중인 에이전트가 submit_answer_feedback MCP 도구를 호출해야 한다. 별도 피드백 화면은 구현 범위에 포함하지 않았다. 예를 들어 개발자가 A001의 실제 ID로 POST /answers/{answer_id}/feedback 을 호출한다. { "rating": "unhelpful", "category": "answer", "comment": "SRE 온콜 승인도 필요한데 답변에서 빠졌어요." } 서버는 이 내용을 feedback 테이블에 저장하고 A001에 연결한다. 이때 category 도 호출자가 입력한 분류다. 서버가 원인을 분석해 붙인 결과가 아니다. unhelpful 에는 이유를 담은 코멘트가 필요하다. A001의 답변 기록 └─ 사용자 피드백: “SRE 온콜 승인이 빠졌어요.” 여기까지는 사용자의 지적을 접수한 상태다. 원문을 확인해 답변이 틀렸다고 판정하거나, 원인을 분석하거나, Wiki를 수정하는 작업은 실행하지 않는다. 구현: 기록 저장소 의 AnswerStore.add_feedback() , MCP 도구 의 submit_answer_feedback() . 3. 사람이 접수된 피드백을 검토한다 검토의 출발점은 사용자가 남긴 피드백이다. 이 사례에서 개발자나 검토자가 확인할 항목은 “SRE 온콜 승인이 빠졌어요”라는 지적이 맞는지, 맞다면 왜 누락됐는지 다. 피드백 내용만으로는 이를 판단할 수 없으므로, 연결된 답변 ID인 A001로 당시 기록을 조회한다. GET /answers/{answer_id} 또는 get_answer_record MCP 도구를 호출하면 당시 요청·답변·실행 기록과 연결된 피드백·평가를 함께 확인할 수 있다. 현재 API·MCP의 조회 기능은 답변 ID 단위이며, 미검토 피드백 목록을 모아 보여주는 기능은 별도로 구현하지 않았다. 이 사례에서 검토자는 다음 내용을 대조한다. 확인 대상 사례에서 확인한 내용 사용자 질문 현재 배포 승인자를 물었다. 실제 답변 팀 리드만 안내했다. 당시 사용한 근거 과거 가이드의 “승인자: 팀 리드”를 사용했다. 현재 원문 팀 리드와 SRE 온콜의 승인이 필요하다. 이를 보고 검토자는 “현재 규칙을 묻는 질문에 과거 규칙을 근거로 답했다”고 판단한다. 만약 당시 읽은 문서에 두 승인자가 모두 적혀 있었다면, 답변 생성 중 누락했는지 살펴봐야 한다. 즉, 검토 대상은 접수된 피드백이고, 답변 기록과 원문은 그 지적을 확인하고 원인을 조사하는 자료 다. 현재 구현에는 피드백을 입력받아 원인을 자동 분석하는 함수가 없다. 평가 API 자체는 피드백이 없어도 사용할 수 있지만, 여기서는 접수된 피드백을 계기로 검토하는 흐름을 설명한다. 4. 검토 결과를 별도 호출로 evaluations에 저장한다 검토자는 판단한 내용을 작성해 POST /answers/{answer_id}/evaluation 으로 제출한다. A001에 대한 입력 예시는 다음과 같다. { "reviewer": "reviewer-1", "verdict": "incorrect", "evidence": "mixed", "reason": "현재 승인자를 물었지만 과거 가이드를 근거로 답했다. 팀 리드는 맞으나 현재 필요한 SRE 온콜 승인이 누락됐다.", "expected": "팀 리드와 SRE 온콜의 승인이 필요하다고 현재 원문을 근거로 답한다.", "expected_status": "answered" } 서버는 입력 형식을 확인하고 evaluations 테이블에 저장한다. verdict 는 정오 판정, evidence 는 근거 평가, reason 은 검토 이유, expected 는 기대 답이다. 모두 검토자가 작성한 값이다. 같은 작업은 사람이 작성한 평가 JSON 파일을 scripts/review_answers.py 에 전달해 수행할 수도 있다. 실행 방법은 README의 v6 안내 에 정리했다. 저장 후 A001을 조회하면 다음 세 종류의 기록을 함께 볼 수 있다. A001 answers: “팀 리드의 승인이 필요합니다.” + 당시 요청·근거·실행 기록 feedback: “SRE 온콜 승인이 빠졌어요.” evaluations: 사람이 확인한 판정·이유·기대 답 기존 답변과 피드백은 그대로 보존한다. 평가를 다시 제출하면 이전 평가를 덮어쓰지 않고 추가하며, 비교·사례 내보내기에는 최신 평가를 사용한다. 구현: 기록 저장소 의 EvaluationInput 과 AnswerStore.evaluate() . evaluate() 는 입력받은 평가를 저장하는 함수이며, 스스로 정답이나 원인을 판단하지 않는다. 5. 저장된 평가를 Wiki 갱신에 연결하는 것은 이후 작업이다 A001에 위 평가를 저장해도 Wiki 내용과 답변 정책은 바뀌지 않는다. 현재 Wiki 갱신기는 sources/ 의 원본 변경을 감지하며, evaluations 테이블을 읽어 갱신하지 않는다. 예를 들어 이 사례를 실제로 개선하려면 사람이 원인에 따라 다음 작업을 선택해야 한다. 발견한 문제의 예 이후에 선택할 작업 원본에 SRE 온콜 승인 규칙 자체가 빠져 있다. 확인된 정책에 맞게 원본을 보완하고 Wiki 갱신을 실행한다. 원본은 맞지만 생성된 Wiki에서 SRE 온콜을 누락했다. Wiki 생성 로직·프롬프트 등을 검토하고 재생성한다. Wiki는 맞지만 과거 페이지를 선택하거나 답변에서 조건을 누락했다. 탐색·답변 로직이나 정책을 수정한다. 평가에서 수정 대상을 결정하고, 변경을 적용하는 연결은 아직 구현하지 않았다. v6에서는 그 결정을 내릴 때 참고할 답변·피드백·검토 결과를 보존한다. 재검증을 위한 보조 도구는 마련돼 있다. 예를 들어 A001처럼 사람의 평가가 있는 기록은 “배포 승인자가 누구인가?”라는 질문과 기대 답을 평가 사례로 내보낼 수 있다. 개발자가 수정 작업을 마친 뒤 비교 도구를 별도로 실행하면 같은 질문의 새 답변을 기록할 수 있다. 보조 도구 현재 가능한 작업 review_answers.py 사람이 작성한 평가 저장, 검토된 사례 내보내기, 보고서에 평가 반영 compare_answers.py 같은 조건에서 기존 검색과 Wiki의 답변·실행 기록 수집 compare_wiki_updates.py 같은 원본 변경에 대한 전체 재구축과 부분 갱신 비교 이 도구들도 별도 실행이 필요하다. 기대 답은 평가에 사용하며, Wiki 생성이나 답변 모델의 입력에 넣지 않는다. 새 답변의 의미적 정확성은 사람이 검토한다. 검증 범위 자동 테스트에서는 모델 대역으로 다음 동작을 확인하도록 구성했다. 테스트 시나리오 확인할 동작 답변을 저장하고 API를 다시 생성한 뒤 조회한다. 당시 요청·답변 기록을 다시 읽을 수 있다. 피드백과 사람의 평가를 각각 제출한다. 같은 답변 ID에 연결되고 기존 답변은 보존된다. 여러 질문을 동시에 처리한다. 요청별 ID와 기록이 섞이지 않는다. 모델 호출이 실패한다. 실패 기록을 저장하고 답변 ID로 조회할 수 있다. 피드백만 있는 사례를 평가 질문으로 내보내려 한다. 사람의 평가가 없으면 거절한다. 관련 테스트는 답변 기록 테스트 와 비교 실행 테스트 에 있다. 기존 구현 검증 기록은 전체 테스트 201개 통과·DB 연동 테스트 18개 건너뜀 이며, 실제 모델을 반복 호출한 품질·시간·비용 비교와 사람의 의미 평가는 아직 수행하지 않았다. 위 승인자 사례 역시 동작 설명을 위한 가상 시나리오다.
원 논문 : Vaswani, A. et al. (2017). Attention Is All You Need . NeurIPS 2017. 목차 Introduction Transformer: 무엇이 달라졌는가 Scaled Dot-Product Attention Multi-Head Attention과 인코더-디코더 Positional Encoding: 순서는 어떻게 알까 Why Self-Attention Experiments: 실제로 더 좋았는가 Discussion Conclusion 1. Introduction: 왜 RNN만으로는 부족했을까 2017년 이전의 기계번역은 RNN, LSTM, GRU 같은 순환 구조가 중심이었다. 이 모델들은 이전 시점의 은닉 상태를 받아 다음 시점의 상태를 계산한다. $$ h_t = f(h_{t-1}, x_t) $$ 따라서 t번째 단어를 처리하려면 반드시 t-1번째 계산이 끝나야 한다. 문장 전체를 한 번에 계산할 수 없다는 뜻이다. 시퀀스가 길어질수록 학습 속도와 메모리 사용량 모두에서 불리해진다. 또 하나의 문제는 장거리 의존성이다. 예를 들어 문장 앞부분의 주어와 뒤쪽 동사의 관계를 이해하려면, 정보가 많은 은닉 상태를 거쳐 전달되어야 한다. 이 경로가 길수록 필요한 정보를 잃거나 학습하기 어려워질 수 있다. 기존에도 attention은 사용됐다. 하지만 대부분 RNN 인코더-디코더 위에 붙는 보조 장치였다. 이 논문의 질문은 한 단계 더 나아간다. RNN을 아예 없애고, attention만으로 시퀀스를 처리할 수 있을까? 저자들의 답이 Transformer다. Transformer는 입력의 모든 토큰 관계를 동시에 계산한다. 따라서 학습 단계에서는 병렬화가 가능하고, 멀리 떨어진 두 토큰도 한 번의 attention으로 직접 연결된다. RNN 단어 1 → 단어 2 → 단어 3 → ... → 단어 n 순서대로 계산해야 함 Transformer 단어 1, 단어 2, 단어 3, ... , 단어 n 서로의 관계를 동시에 계산 필기에 적은 “RNN은 앞 단계가 끝나야 다음 단계를 계산하므로 긴 문장에서 병렬 학습이 어렵다”는 문장이 바로 이 논문의 출발점이다. 2. Transformer: 무엇이 달라졌는가 Transformer는 여전히 인코더-디코더 구조를 사용한다. 차이는 내부 계산 방식이다. RNN을 쌓는 대신 self-attention과 feed-forward network(FFN)를 쌓는다. 2.1 인코더와 디코더의 역할 인코더는 입력 문장 전체를 읽고, 각 토큰이 문맥을 반영한 표현이 되도록 만든다. 디코더는 이 표현을 참고하면서 이전에 생성한 단어를 바탕으로 다음 단어를 한 개씩 생성한다. 입력: I love machine learning ↓ 인코더: 각 단어가 다른 단어와의 관계를 반영한 벡터가 됨 ↓ 디코더: <BOS> → 나는 → 기계 → 학습을 → 좋아한다 → <EOS> 원 논문의 기본 모델은 인코더 6층, 디코더 6층을 사용한다. 구성 인코더 디코더 첫 번째 attention Multi-Head Self-Attention Masked Multi-Head Self-Attention 두 번째 attention 없음 Encoder-Decoder Attention 공통 구성 FFN, Residual Connection, Layer Normalization FFN, Residual Connection, Layer Normalization 디코더의 masked 가 특히 중요하다. 번역문을 학습할 때 i번째 단어가 i+1번째 정답 단어를 미리 본다면, 모델은 실제 생성 시에는 사용할 수 없는 정보를 이용하게 된다. 그래서 미래 위치의 attention 점수를 -∞ 로 만들어 softmax 뒤 가중치가 0이 되게 한다. 디코더가 "나는 기계"까지 생성한 시점 볼 수 있는 토큰: <BOS>, 나는, 기계 볼 수 없는 토큰: 학습을, 좋아한다 3. Scaled Dot-Product Attention 3.1 Q, K, V는 무엇인가 attention은 Query(Q), Key(K), Value(V) 세 행렬로 계산한다. Query : 지금 무엇을 찾고 싶은가 Key : 각 토큰이 어떤 정보와 관련 있는가 Value : 실제로 가져올 정보는 무엇인가 현재 토큰의 Query와 모든 토큰의 Key를 비교해 관련도를 얻고, 그 관련도로 Value를 가중합한다. $$ \operatorname{Attention}(Q,K,V) =\operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V $$ 계산은 다음 순서로 이해하면 된다. 1. QKT → 모든 Query와 Key의 유사도 점수 2. √dk로 나누기 → 점수가 너무 커지는 것을 방지 3. softmax → 각 Query가 어떤 토큰에 얼마나 집중할지 결정 4. V의 가중합 → 중요한 토큰 정보를 더 많이 반영한 새 표현 생성 3.2 왜 √d_k 로 나눌까 논문의 각주 4는 이 스케일링이 왜 필요한지 설명한다. q , k 의 각 원소가 평균 0, 분산 1인 독립 확률변수라고 하자. $$ q\cdot k=\sum_{i=1}^{d_k}q_i k_i $$ 그러면 내적의 평균과 분산은 다음과 같다. $$ \mathbb{E}[q\cdot k]=0, \qquad \operatorname{Var}(q\cdot k)=d_k $$ 즉 d_k 가 클수록 점곱 결과는 큰 절댓값을 갖기 쉬워진다. 큰 값이 softmax에 들어가면 확률이 한쪽에 지나치게 쏠리고, 작은 확률 쪽의 gradient는 거의 사라진다. √d_k 로 나누면 점수의 분산이 대략 1 수준으로 안정된다. 해석 √d_k 는 단순한 보정 상수가 아니다. attention이 차원 수가 커져도 너무 빨리 확신하지 않도록 만들어, 학습 가능한 softmax 구간을 유지하는 장치다. 4. Multi-Head Attention과 인코더-디코더 4.1 하나의 attention만으로는 부족한가 한 개의 attention은 하나의 표현 공간에서 토큰 관계를 계산한다. 그런데 문장에는 여러 종류의 관계가 섞여 있다. 어떤 관계는 인접 단어의 결합일 수 있고, 어떤 관계는 주어-동사 관계나 대명사가 가리키는 대상일 수 있다. Transformer는 Q, K, V를 서로 다른 방식으로 여러 번 투영하고, 각각의 attention을 병렬로 계산한다. $$ \operatorname{head}_i =\operatorname{Attention}(QW_i^Q,KW_i^K,VW_i^V) $$ $$ \operatorname{MultiHead}(Q,K,V) =\operatorname{Concat}(\operatorname{head}_1,\ldots,\operatorname{head}_h)W^O $$ 기본 모델에서는 h=8 , d_{model}=512 , d_k=d_v=64 를 사용한다. 입력 표현 ├─ Head 1: 관계 A를 보는 attention ├─ Head 2: 관계 B를 보는 attention ├─ ... └─ Head 8: 관계 H를 보는 attention ↓ 이어 붙인 뒤 한 번 더 선형 변환 해석 멀티헤드는 단순히 attention을 8번 복제한 것이 아니다. 서로 다른 투영 공간에서 관계를 찾게 해, 하나의 가중 평균으로는 놓칠 수 있는 여러 패턴을 동시에 포착하게 한다. 원 논문의 부록 그림은 실제로 일부 헤드가 장거리 의존성이나 대명사 지시 관계처럼 보이는 패턴을 학습한 예를 보여 준다. 다만 attention 시각화만으로 각 헤드의 역할을 완전히 인과적으로 설명할 수 있는 것은 아니다. 4.2 Transformer 안의 attention 세 가지 위치 Q의 출처 K, V의 출처 하는 일 인코더 self-attention 이전 인코더 층 이전 인코더 층 입력 문장 안의 모든 토큰이 서로를 참고한다. 디코더 masked self-attention 이전 디코더 층 이전 디코더 층 현재 위치와 과거 출력만 참고한다. encoder-decoder attention 디코더 층 인코더 출력 다음 출력 단어를 만들 때 입력의 관련 부분을 찾는다. 필기에서 정리한 세 문장, 즉 “입력 토큰이 서로 참고한다”, “디코더는 과거만 본다”, “출력 단어를 만들 때 입력의 관련 부분을 찾는다”는 위 세 attention을 요약한 것이다. 5. Positional Encoding: 순서는 어떻게 알까 self-attention은 모든 토큰을 동시에 처리한다. 이 자체로는 토큰의 순서를 알 수 없다. 예를 들어 아래 두 문장은 같은 단어를 쓰지만 의미가 다르다. 개가 사람을 물었다. 사람이 개를 물었다. 그래서 Transformer는 토큰 임베딩에 위치 인코딩을 더한다. 원 논문은 서로 다른 주파수의 사인·코사인 값을 사용한다. $$ PE_{(pos,2i)} =\sin\left(\frac{pos}{10000^{2i/d_{model}}}\right) $$ $$ PE_{(pos,2i+1)} =\cos\left(\frac{pos}{10000^{2i/d_{model}}}\right) $$ pos : 토큰의 위치 i : 벡터 차원 인덱스 d_model : 임베딩 차원 차원마다 주파수가 달라 위치마다 서로 다른 파형 조합이 만들어진다. 저자들은 이런 구조가 상대적 거리 정보를 학습하는 데도 도움이 될 것이라고 보았다. 해석 Transformer는 순서 정보를 버린 모델이 아니다. RNN처럼 계산 순서에 순서를 숨겨 두는 대신, 위치 정보를 벡터로 명시적으로 제공하는 모델이다. 논문에서는 학습형 위치 임베딩도 실험했고 성능은 거의 같았다. 사인·코사인 방식을 선택한 이유는 학습에서 보지 못한 더 긴 길이에도 외삽할 가능성을 기대했기 때문이다. 6. Why Self-Attention 논문의 표 1은 self-attention, RNN, CNN을 계산량·병렬성·장거리 연결 측면에서 비교한다. 층 종류 층당 복잡도 순차 연산 최대 경로 길이 Self-Attention O(n2d) O(1) O(1) RNN O(nd2) O(n) O(n) CNN O(knd2) O(1) O(log_k n) 제한된 Self-Attention O(rnd) O(1) O(n/r) 층당 복잡도 : 한 층을 계산하는 데 드는 비용 순차 연산 : 이전 계산이 끝나야 시작할 수 있는 단계 수 최대 경로 길이 : 멀리 떨어진 두 토큰이 서로 영향을 주기까지 거치는 최대 단계 수 RNN과 비교하면 RNN은 O(n) 번 순서대로 계산해야 하며, 멀리 떨어진 단어도 O(n) 길이의 경로를 통해 연결될 수 있다. 반면 self-attention은 모든 위치 쌍을 한 층에서 직접 연결하므로 순차 연산 수와 최대 경로 길이가 모두 O(1) 이다. CNN과 비교하면 CNN도 위치별 연산은 병렬화할 수 있다. 하지만 작은 커널 하나로는 먼 토큰을 직접 연결할 수 없다. 여러 층을 쌓아야 하며, 그만큼 경로가 길어진다. 중요한 단서: O(n2) self-attention이 항상 계산량에서 이기는 것은 아니다. 모든 토큰 쌍을 비교하므로 시퀀스가 아주 길면 n2 비용이 커진다. 논문도 이 한계를 인정하며, 각 토큰이 주변 r 개만 보도록 제한하는 local/restricted attention을 이후 과제로 제시한다. 문장처럼 n이 비교적 짧을 때 → full self-attention의 전역 연결이 유리 문서·음성·이미지처럼 n이 매우 길 때 → n2 비용이 커져 sparse/local attention 같은 절충이 필요 7. Experiments: 실제로 더 좋았는가 7.1 학습 설정 항목 설정 데이터 WMT 2014 EN-DE 약 450만 문장쌍, EN-FR 약 3,600만 문장쌍 기본 모델 6층, d_model=512 , d_ff=2048 , head 8개 Optimizer Adam, β_1=0.9 , β_2=0.98 , ε=10^{-9} Regularization dropout 0.1, label smoothing 0.1 기본 모델 학습 P100 GPU 8개에서 약 12시간 큰 모델 학습 P100 GPU 8개에서 약 3.5일 학습률은 처음 4,000단계 동안 증가했다가 이후 감소한다. $$ \operatorname{lrate} =d_{model}^{-0.5} \min\left( \operatorname{step}^{-0.5}, \operatorname{step}\cdot\operatorname{warmup}^{-1.5} \right) $$ 초기에는 너무 큰 업데이트를 피하고, 이후에는 안정적으로 수렴시키려는 스케줄이다. 7.2 번역 결과 모델 EN-DE BLEU EN-FR BLEU EN-DE 학습 비용(FLOPs) GNMT + RL 24.6 39.92 2.3 × 10^19 ConvS2S 25.16 40.46 9.6 × 10^18 Transformer (base) 27.3 38.1 3.3 × 10^18 Transformer (big) 28.4 41.8 2.3 × 10^19 해석 Transformer-big은 영어→독일어에서 28.4 BLEU, 영어→프랑스어에서 41.8 BLEU를 기록했다. 당시 기존의 단일 모델뿐 아니라 영어→독일어에서는 앙상블까지 넘어섰다. 특히 기본 모델의 결과가 중요하다. Transformer-base는 큰 모델보다 훨씬 적은 비용으로도 이전 모델보다 높은 EN-DE BLEU를 기록했다. 이는 성능 향상만이 아니라, RNN의 순차성을 제거한 구조가 실제 학습 효율로 이어졌다는 근거다. 7.3 변형 실험에서 확인한 것 바꾼 요소 관찰 결과 의미 Head 수 1개 헤드는 BLEU 24.9, 8개 헤드는 25.8 여러 표현 공간을 보는 것이 유리하다. 모델 크기 큰 d_model , d_ff 에서 성능 상승 모델 용량도 중요하다. Dropout 없으면 성능 하락 attention 모델도 과적합을 막아야 한다. 위치 표현 사인파와 학습형 임베딩의 결과가 유사 위치 정보의 존재가 핵심이며 방식은 하나로 고정되지 않는다. 8. Discussion 8.1 번역 밖에서도 작동하는가 저자들은 영어 구문구조 파싱도 실험했다. 4층 Transformer는 WSJ 전용 학습에서 F1 91.3, 준지도 설정에서 F1 92.7을 기록했다. 이는 Transformer가 기계번역만을 위한 트릭이 아니라, 입력 시퀀스를 구조적 출력 시퀀스로 바꾸는 더 일반적인 구조임을 보여 준다. 다만 표 4에서 생성형 Recurrent Neural Network Grammar는 F1 93.3으로 더 높은 결과를 냈다. 따라서 논문 결과를 “Transformer가 모든 과제에서 최고”라고 읽기보다는, RNN 없이도 여러 시퀀스 과제에서 경쟁력 있는 결과를 냈다고 읽는 편이 정확하다. 8.2 이 논문의 강점 문제와 해결책이 직접 연결된다. RNN의 순차 계산 문제를 전역 attention으로 정면에서 해결한다. 구조가 단순하다. attention, FFN, 잔차 연결, 정규화 블록을 반복해 깊이를 늘릴 수 있다. 실험 근거가 넓다. 번역 성능뿐 아니라 학습 비용, 구조 변형, 다른 과제로의 일반화를 함께 보였다. 해석의 단서를 준다. 헤드 시각화로 장거리 관계와 대명사 지시처럼 보이는 패턴을 제시했다. 8.3 한계 긴 입력의 비용 full self-attention은 모든 토큰 쌍을 비교하므로 O(n2) 시간·메모리 비용이 든다. 긴 문서나 고해상도 이미지처럼 토큰 수가 큰 문제에서는 이 비용이 핵심 병목이 된다. 생성은 여전히 순차적이다 학습에서는 모든 위치를 병렬로 계산할 수 있다. 그러나 디코더는 이전 출력 토큰을 조건으로 다음 토큰을 만들므로, 추론 단계에서는 여전히 한 토큰씩 생성한다. attention 가중치가 곧 설명은 아니다 어떤 헤드가 특정 단어를 강하게 본다고 해서, 그 가중치만으로 모델 예측의 원인을 완전히 설명할 수는 없다. 시각화는 좋은 관찰 도구이지만 인과적 증명과는 구분해야 한다. 9. Conclusion: 논문의 핵심 결론 이 논문의 핵심은 “attention을 추가했다”가 아니다. 시퀀스 모델의 기본 계산 단위를 순환 에서 전역적인 토큰 관계 계산 으로 바꿨다는 점이다. RNN의 관점 이전 상태를 전달하며 다음 상태를 계산한다. Transformer의 관점 모든 토큰 관계를 먼저 계산하고, 각 토큰이 필요한 정보를 선택해 가져온다. Transformer는 다음 요소를 결합한다. QK^T 기반 attention으로 토큰 간 관계를 계산하고 √d_k 스케일링으로 softmax 학습을 안정화하며 여러 head로 서로 다른 관계를 병렬로 학습하고 positional encoding으로 순서 정보를 제공하며 masked decoder로 자기회귀 생성을 유지한다. 그 결과 당시 번역 성능과 학습 효율을 함께 끌어올렸고, 이후 대규모 언어 모델과 Vision Transformer 계열의 기반이 되었다. 동시에 O(n2) attention 비용과 순차적 디코딩은 이후 연구가 계속 해결해 온 핵심 과제로 남았다. 더 생각해 볼 질문 Q, K, V를 모두 같은 입력에서 만들면서도 왜 서로 다른 선형 변환을 쓰는가? 1/√d_k 스케일링을 없애면 softmax 분포와 gradient는 어떻게 달라지는가? 디코더 마스크가 없다면 학습 중에는 무엇이 잘못되고, 추론 시에는 왜 문제가 되는가? 입력 길이 n 이 매우 커졌을 때 full attention의 장점과 비용 사이에서 어떤 선택을 할 수 있는가? 참고 자료 Attention Is All You Need 원문 PDF 작성 필기 PDF
문제 설명 문자열 my_string 의 각 문자를 n 번씩 반복해서 새로운 문자열을 만드는 문제이다. ex) my_string = "hello" n = 3 이라면 결과는 "hhheeellllllooo" 가 된다. 풀이 1. StringBuilder를 사용하지 않는 방법 문자열을 하나씩 확인하면서 각 문자를 n 번 반복해서 answer 에 추가한다. += 연산자를 사용해 문자열을 계속 이어 붙이는 방식이다. 최종 코드 class Solution { public String solution(String my_string, int n) { String answer = ""; for (int i = 0; i < my_string.length(); i++) { for (int j = 0; j < n; j++) { answer += my_string.charAt(i); // i번째 문자 가져옴 } } return answer; } } 풀이 2. StringBuilder를 사용하는 방법 풀이 1과 동일하게 각 문자를 n 번 반복하지만, 문자열을 StringBuilder 에 추가한다. append() 를 사용하면 문자열을 반복해서 이어 붙일 때 더 효율적으로 처리할 수 있다. 최종 코드 class Solution { public String solution(String my_string, int n) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < my_string.length(); i++) { char ch = my_string.charAt(i); // i번째 문자를 가져와 ch에 저장함 for (int j = 0; j < n; j++) { sb.append(ch); // ch를 StringBuilder에 추가함 } } return sb.toString(); // String으로 반환함 } } 실행 결과
BestExpertz – Affordable Social Media Marketing Solutions In today's competitive digital world, businesses and creators need a strong social media presence to succeed. https://bestexpertz.com/ provides a wide range of social media marketing (SMM) services designed to help individuals, brands, influencers, and agencies grow their online visibility. Whether you are building a new brand or expanding an existing one, https://bestexpertz.com/ offers affordable solutions to support your marketing goals. One of the key benefits of https://bestexpertz.com/ is its extensive selection of services for popular platforms, including Instagram, YouTube, TikTok, Facebook, Telegram, Twitter (X), and more. Users can explore different followers, likes, views, comments, and engagement packages designed to support their social media marketing activities. The platform can be useful for content creators, digital marketers, agencies, and businesses of different sizes. The ordering process at https://bestexpertz.com/ is designed to be simple and user-friendly. Customers can browse available services, select a package that matches their requirements, and manage their orders through the platform. A straightforward dashboard can make it easier for users to organize their social media marketing activities. Another feature associated with https://bestexpertz.com/ is its focus on affordable SMM solutions. Cost-effective services can be useful for startups, freelancers, creators, and small businesses working with limited marketing budgets. Choosing suitable services alongside original content and consistent social media activity can help support a broader digital marketing strategy. Besides social media services, https://bestexpertz.com/ can also provide access to educational content covering social media marketing strategies, digital marketing topics, and online growth ideas. Learning about current social media practices can help marketers make more informed decisions when planning campaigns. If you are researching social media marketing platforms, https://bestexpertz.com/ provides a place to explore available SMM services and related marketing resources. Users should review individual service details, pricing, delivery information, and applicable terms before placing an order. Visit https://bestexpertz.com/ to explore the available services and learn more about social media marketing solutions. Combining suitable marketing services with quality content, audience engagement, and a consistent publishing strategy can contribute to a more structured online presence.
Text-to-video models reward prompts that read like a shot list. A few habits that consistently help: Lead with the subject and action : "a red fox trotting through fresh snow" beats "winter scene". Name the camera move : slow dolly-in, handheld follow, aerial pull-back, locked-off wide. Set the light and time of day : golden hour backlight, overcast soft light, neon at night. Describe the sound if the model generates audio: wind, footsteps crunching, distant traffic. Keep one idea per clip and stitch longer stories from several 5–10 second shots. I have been testing these on Kling 4.0, a free online AI video generator that turns text into cinematic videos with native 4K and synced audio: https://kling4.org A useful exercise is to write the same scene three ways (wide, medium, close-up) and compare how the model keeps the subject consistent between them.
Autor: Leander Van Linthout Opublikowano 7 października 2026 Żeby pojawić się w Google AI Overviews, zadbaj o indeksację strony, możliwość prezentowania jej treści oraz odpowiedzi poparte wiarygodnymi informacjami. Następnie sprawdź, czy witryna uczestniczy w funkcjach generatywnych Google, wybierz pytania związane z ofertą i popraw materiały, które najlepiej na nie odpowiadają. Nie ma specjalnego znacznika ani procedury gwarantującej cytowanie. Skuteczna praca łączy SEO techniczne, użyteczne treści i regularny pomiar. Oceniaj osobno obecność w odpowiedziach, kliknięcia oraz wyniki biznesowe, ponieważ większa widoczność nie musi oznaczać większego ruchu. Zacznij od kilku istniejących podstron, dla których możesz dostarczyć konkretną wiedzę lub własne dane. Czym jest pozycjonowanie w AI Overviews i co naprawdę decyduje o cytowaniu? Pozycjonowanie w AI Overviews polega na zwiększaniu szans, że Google wykorzysta Twoją stronę jako źródło odpowiedzi i pokaże prowadzący do niej link. Nadal opiera się na SEO, dostępności strony i wartości informacji, a nie na osobnym zgłoszeniu artykułu do modelu. AI Overview to generowane podsumowanie pojawiające się przy części wyszukiwań. Cytowanie oznacza odsyłacz do konkretnej strony. Wzmianka o marce może wystąpić bez takiego odsyłacza, dlatego tych dwóch zdarzeń nie należy traktować jako tego samego wyniku. Google opisuje mechanizm wyszukiwania powiązanych informacji, dzięki któremu odpowiedź może korzystać z kilku podtematów. Wysoka pozycja na główną frazę nie oznacza więc automatycznie cytowania, a wąsko wyspecjalizowana podstrona może odpowiadać na jeden istotny fragment pytania. To powód, żeby analizować potrzeby użytkownika, zamiast powtarzać główne słowo kluczowe. Nie istnieje publiczny wzór pozwalający obliczyć szansę cytowania. Warto oddzielić oficjalne wymagania od zaleceń redakcyjnych: indeksacja jest warunkiem kwalifikacji, natomiast krótka odpowiedź pod nagłówkiem jest sposobem poprawy czytelności, bez gwarancji wyboru przez Google. Zacznij od konkretnego celu biznesowego. Sklep może chcieć być źródłem porad o doborze produktu, firma usługowa wyjaśniać kryteria wyboru wykonawcy, a producent udostępniać instrukcje i pomiary. Każdy z tych celów wymaga innych materiałów. Przy ocenie konkurencji sprawdzaj stronę cytowaną, nie tylko jej domenę. Zapisz, jaki problem rozwiązuje, jakie podaje dowody i czy odpowiada na pytanie, którego brakuje u Ciebie. Nie zakładaj, że samo skopiowanie jej nagłówków przyniesie podobny efekt. Jak sprawdzić, czy Google może wykorzystać Twoją stronę? Sprawdź indeksację, możliwość wyświetlania fragmentu treści oraz ustawienie udziału witryny w funkcjach generatywnych. Dopiero po tej kontroli warto inwestować w rozbudowę artykułów. W Search Console wybierz właściwą usługę i skorzystaj ze sprawdzania adresu URL. Porównaj adres publikowany z adresem kanonicznym wskazywanym przez Google. Jeśli robot wybiera inną podstronę, możesz oceniać materiał, który nie jest traktowany jako główna wersja. Sprawdź również stronę po renderowaniu. Najważniejsza odpowiedź powinna być dostępna jako tekst, a nie wyłącznie grafika, film lub element wymagający interakcji. Przy problemach z dostępem przejrzyj konfigurację hostingu i zabezpieczeń. W 2026 roku Google udostępniło ustawienie Search generative AI w Search Console. Znajdziesz je w ustawieniach usługi. Sprawdź, czy witryna jest uwzględniana, wykluczana, czy dziedziczy wybór z usługi nadrzędnej. Domyślna konfiguracja uwzględnia witryny, ale dziedziczenie może zmienić sytuację konkretnej sekcji. Indeksacja Sprawdź status docelowego adresu URL. Przy problemie wyjaśnij przyczynę wykluczenia. Wersja kanoniczna Sprawdź adres wybrany przez Google. Przy problemie uporządkuj duplikaty i sygnały. Dostęp robota Sprawdź robots.txt i zabezpieczenia serwera. Przy problemie usuń niezamierzoną blokadę. Fragmenty treści Sprawdź noindex, nosnippet i ograniczenia podglądu. Przy problemie dopasuj reguły do celu publikacji. Udział w funkcjach AI Sprawdź ustawienie i dziedziczenie w Search Console. Przy problemie potwierdź właściwy wybór. Czytelność strony Sprawdź, czy główna odpowiedź jest w widocznym tekście. Przy problemie popraw sposób prezentacji. Nie zmieniaj wszystkich reguł automatycznie. Ograniczenie podglądu może być świadomą decyzją wydawcy. Najpierw ustal, które materiały mają być publicznie wykorzystywane, a dopiero potem popraw konfigurację. Zapisz wynik audytu przy każdym adresie. Krótka notatka „indeksowany, właściwy canonical, udział włączony” pozwala później oddzielić problem techniczny od problemu z zawartością. Sama obecność w indeksie nie gwarantuje jednak wyświetlenia w odpowiedzi. Jak znaleźć pytania, na które warto przygotować odpowiedzi? Wybieraj pytania związane z ofertą, rzeczywistymi problemami klientów i wynikami Twojej witryny. Długi ogon jest przydatny, jeśli ujawnia konkretną decyzję, którą użytkownik chce podjąć. Do zebrania tematów zacząłbym od SQSEO: jedna fraza bazowa daje propozycje long tail pogrupowane według intencji, a wyniki można wyeksportować do CSV. Podstawowe badanie jest darmowe. Szacunki popytu potraktuj jako wskazówkę, którą uzupełnisz danymi swojej strony. Ustaw kraj i język badania na Polskę i polski. Następnie wybierz frazę związaną z kategorią produktu lub usługą, na przykład „ekspres do kawy”, „ocieplenie poddasza” albo „program do faktur”. Podziel pytania według zadania: wyjaśnienie: „co oznacza ciśnienie w ekspresie?”; porównanie: „ekspres automatyczny czy kolbowy do domu?”; wybór: „jaki ekspres do małej kuchni?”; rozwiązanie problemu: „dlaczego ekspres robi kwaśną kawę?”; warunki zakupu: „ile kosztuje utrzymanie ekspresu?”. To przykładowe zapytania, a nie potwierdzona lista fraz uruchamiających AI Overviews. Każde sprawdź w Google, zapisując kraj, urządzenie i datę. Brak podsumowania też jest wynikiem pomiaru. Połącz listę z zapytaniami z Search Console oraz pytaniami z obsługi klienta. Priorytet mają tematy, przy których masz dane, doświadczenie lub materiały pozwalające udzielić lepszej odpowiedzi. Nie twórz osobnej strony dla każdej niewielkiej zmiany sformułowania. „Ekspres do małej kuchni” i „ekspres do niewielkiej kuchni” zwykle opisują tę samą potrzebę. Z kolei dobór urządzenia do biura może wymagać osobnego materiału ze względu na liczbę użytkowników i intensywność pracy. Do każdego tematu dopisz docelowy adres, właściciela treści i dowód, który możesz dostarczyć. Bez tego lista pytań łatwo zamienia się w plan publikacji podobnych tekstów bez własnej wartości. Jak pisać treści, które pomagają użytkownikowi podjąć decyzję? Odpowiadaj wprost, podawaj warunki rekomendacji i dodawaj informacje, których nie da się uzyskać przez przepisanie kilku innych poradników. Dobra struktura pomaga czytać materiał, ale nie zastępuje jego zawartości. Zacznij sekcję od odpowiedzi Pod nagłówkiem „Jaki ekspres wybrać do małej kuchni?” najpierw wymień kryteria: szerokość urządzenia, miejsce na otwarcie zbiornika i dostęp do pojemnika na fusy. Dopiero później wyjaśnij różnice między konstrukcjami. Odpowiedź powinna zachować sens także poza całym artykułem. Zdanie „ten model będzie lepszy” jest niejasne bez kontekstu. „Model z przednim dostępem do zbiornika jest wygodniejszy pod niską szafką” zawiera warunek i uzasadnienie. Dodaj własne dowody Dla sklepu mogą to być zdjęcia wymiarów, pomiary i porównania sposobu czyszczenia. Firma usługowa może pokazać zakres prac, przykładowy harmonogram i warunki wyceny. Producent oprogramowania może opisać rzeczywiste ograniczenia funkcji. Rozróżniaj dane producenta od własnego testu. Jeśli mierzysz urządzenie, podaj metodę i warunki. Jeśli korzystasz z dokumentacji, wskaż jej wersję. Nie przedstawiaj opinii jako wyniku pomiaru. Google w poradniku optymalizacji opublikowanym w 2026 roku podkreśla wartość treści opartych na doświadczeniu i wiedzy, wykraczających poza powszechnie dostępne informacje. To uzasadnia inwestowanie w materiał źródłowy zamiast kolejnej ogólnej listy porad. Pokaż wyjątek i następny krok Dobra rekomendacja wyjaśnia również, kiedy przestaje działać. Mały ekspres może pasować do mieszkania, ale okazać się niewygodny dla dużego zespołu. Dopisz, jakie kryterium zmienia wybór. Następny krok powinien odpowiadać intencji: porównanie modeli, instrukcja konserwacji, kalkulator kosztu albo kontakt w sprawie wyceny. Nie każda sekcja potrzebuje wezwania do zakupu. Uzupełnij nazwisko autora, jego kompetencje i datę rzeczywistej aktualizacji. Przy zmianie oferty popraw także starsze rekomendacje. Sama wymiana roku w tytule nie rozwiązuje problemu nieaktualnych danych. Jak mierzyć widoczność, kliknięcia i efekty biznesowe? Mierz osobno obecność strony w funkcjach generatywnych, cytowania w kontrolowanej próbie oraz wyniki biznesowe ruchu organicznego. Żaden pojedynczy wskaźnik nie opisuje całego efektu. Google ogłosiło osobne raporty Search Generative AI w czerwcu 2026 roku, a według aktualizacji komunikatu udostępniło je wszystkim witrynom 31 sierpnia. Raport obejmuje wyświetlenia i pozwala analizować strony, kraje, urządzenia oraz daty. Dane pozostają także częścią ogólnego raportowania wyszukiwania. Nie zakładaj, że każde pole znane z klasycznego raportu jest dostępne również w nowym widoku. Sprawdź zakres danych swojej usługi i zapisuj, z którego raportu pochodzi liczba użyta w prezentacji. Do kontroli cytowań przygotuj stałą próbę pytań. Zachowaj jednakowe warunki, a przy każdym pomiarze notuj obecność AI Overview, cytowany adres oraz ewentualną wzmiankę o marce. Wyświetlenia generatywne Zbieraj je w raporcie Search Generative AI. Pozwalają ocenić ekspozycję adresów w funkcjach AI. Obecność cytowania Sprawdzaj ją na stałej próbie pytań w Google. Pozwala ocenić powtarzalność odsyłania do strony. Udział w odpowiedziach Obliczaj go, dzieląc cytowania przez ustaloną próbę. Pozwala ocenić zmianę widoczności w badanym zestawie. Kliknięcia organiczne Zbieraj je w ogólnym raporcie skuteczności. Pozwalają ocenić ruch z wyszukiwania. Wynik biznesowy
Av Leander Van Linthout Publicerad 7 oktober 2026 För att optimera för ChatGPT Search behöver du göra webbplatsen åtkomlig för sökcrawlern, besvara relevanta kundfrågor och ge svaren kontrollerbara belägg. SQSEO hjälper dig att hitta long tail-frågor och följa vilka varumärken och sidor AI-assistenter nämner och citerar. Börja med tekniska hinder, välj sedan ett fåtal frågor där du har något konkret att tillföra. Mät omnämnanden, citeringar och besök separat, eftersom ett synligt varumärke inte automatiskt får trafik. Ingen ändring garanterar en rekommendation, och ett enstaka ChatGPT-svar räcker inte för att avgöra om arbetet fungerar. Hur fungerar synlighet i ChatGPT Search? ChatGPT Search kan söka på webben och använda information från flera källor för att besvara en fråga. Din webbplats kan bidra med ett faktaunderlag, bli en länkad källa eller få sitt varumärke omnämnt i svaret. OpenAI beskriver att en användarfråga kan skrivas om till flera riktade sökningar hos sökleverantörer. Därför behöver innehållet täcka de konkreta delfrågor som ett köpbeslut innehåller. En sida om kaffekoppar kan exempelvis behöva besvara frågor om storlek, diskmaskin och leverans, utöver materialet. Det är en praktisk innehållsstrategi utifrån hur sökningen fungerar, ingen publicerad lista över rankningssignaler. Skilj mellan fyra resultat: Omnämnande: företagsnamnet förekommer i texten. Rekommendation: företaget föreslås för användarens situation. Citering: en sida används som länkad källa. Besök: användaren klickar vidare till webbplatsen. En informationssida kan citeras utan att ditt företag rekommenderas. Ett företag kan också rekommenderas med stöd från en extern recension. Välj därför vilket resultat som är viktigast innan du ändrar innehållet. För en svensk nätbutik skulle jag prioritera relevanta produktrekommendationer och besök på kategorisidor. För ett konsultföretag kan en korrekt beskrivning av specialistområdet vara ett bättre första mål. Båda behöver kontrollera vilka frågor som utlöser synligheten. Behåll vanlig SEO som arbetsgrund: fungerande sidor, begripliga rubriker och interna länkar. Lägg till en separat kontroll av AI-svaren. En position i Google är användbar information om efterfrågan, men bevisar inte att ChatGPT väljer samma källa. Vilka tekniska hinder ska du kontrollera först? Kontrollera åtkomsten för OAI-SearchBot, webbplatsens brandvägg och innehållet som servern faktiskt skickar. En tillåtande robots.txt hjälper inte om nästa lager stoppar besöket med en säkerhetskontroll. Enligt OpenAI:s dokumentation om crawlers används OAI-SearchBot för sökning och GPTBot för eventuell modellträning. Inställningarna är separata. ChatGPT-User används för vissa användarinitierade besök och styr inte behörigheten för automatisk sökcrawl. Om du vill tillåta sökcrawlern men avstå från eventuell träning kan utgångspunkten vara: User-agent: OAI-SearchBot Allow: / User-agent: GPTBot Disallow: / Granska hela den befintliga filen innan du inför exemplet. Behåll avsiktliga skydd för privata områden. Kontrollera också webbhotellets och CDN-tjänstens regler mot OpenAI:s publicerade IP-intervall. En ändrad user-agent i ett eget test bevisar inte att den riktiga crawlern släpps igenom. Robots.txt Vad du undersöker: Åtkomst för OAI-SearchBot till prioriterade sidor. Nästa åtgärd: Rätta oavsiktliga blockeringar. Brandvägg och CDN Vad du undersöker: Nekade anrop eller säkerhetsutmaningar. Nästa åtgärd: Granska verifierad crawlertrafik. HTTP-svar Vad du undersöker: Felkoder och omdirigeringskedjor. Nästa åtgärd: Åtgärda trasiga sidvägar. Sidinnehåll Vad du undersöker: Svar och produktfakta i serverns HTML. Nästa åtgärd: Gör centrala uppgifter direkt läsbara. Sididentitet Vad du undersöker: Motstridiga canonical- och indexeringsanvisningar. Nästa åtgärd: Kontrollera avsikten per sidtyp. Jag skulle börja med en kategori, en produkt och en informationssida. Läs deras HTML och jämför med det som besökaren ser. Om centrala uppgifter saknas före JavaScript-rendering bör utvecklaren undersöka hur de kan göras tillgängliga i serverns svar. Lägg inte veckor på ett nytt filformat medan produktbeskrivningar eller jämförelser är otillgängliga. Behandla llms.txt som ett möjligt experiment, inte som ett dokumenterat krav för att visas i ChatGPT Search. Hur hittar du frågorna som är värda att optimera för? Börja med frågor där kunden behöver välja, jämföra eller bedöma om din produkt passar. Kombinera sökordsresearch med frågor från support, försäljning och befintliga kunder. SQSEO är en praktisk startpunkt för svensk research: ett startsökord ger long tail-sökord och AI-sökfrågor, grupperade efter sökavsikt och exporterbara till CSV. Grundresearchen är gratis utan betalkort. Välj Sverige och svenska, och använd volymuppskattningar som stöd för prioritering snarare än som exakta mätningar av ChatGPT-användning. För en butik med handgjord keramik kan startsökordet vara ”handgjorda kaffekoppar”. Bygg sedan en första testlista med exempelvis: Vilka handgjorda kaffekoppar passar som present i Sverige? Hur väljer jag en keramikkopp som tål diskmaskin? Vilka svenska butiker säljer stora handgjorda kaffemuggar? Vad ska jag kontrollera innan jag köper en keramikkopp online? Frågorna är illustrativa. De representerar olika beslut: presentköp, användning, produktval och riskbedömning. Kontrollera dem mot faktiska kundfrågor innan du använder dem som återkommande mätning. Prioritera varje fråga med fyra bedömningar: relevans för erbjudandet, närhet till köp, tillgång till eget underlag och möjlighet att förbättra en befintlig sida. En smal fråga kan vara värdefull även när den uppskattade sökvolymen är låg. Håll varumärkesfrågor åtskilda från upptäcktsfrågor. ”Vad säljer Företag X?” visar om företaget beskrivs korrekt. ”Vilka butiker passar för en keramikpresent?” visar om företaget kommer med bland alternativen utan att namnet matas in. Gör två fasta listor och dokumentera varför varje fråga ingår. Lägg nya idéer i en separat lista tills nästa planerade översyn. Annars kan en bättre synlighet bero på att du började ställa enklare frågor. Hur skriver du innehåll som kan användas som källa? Skriv ett direkt svar nära början av sidan och följ det med underlag som förklarar villkor och begränsningar. Varje avsnitt bör gå att förstå utan att läsaren måste leta efter produktnamn eller sammanhang på en annan sida. En rubrik som ”Kvalitet i varje detalj” ger lite vägledning. ”Tål våra handgjorda kaffekoppar diskmaskin?” pekar på ett verkligt beslut. Svaret behöver sedan ange vilka produkter uppgiften gäller och var skötselrådet kommer ifrån. Gör produktfakta kontrollerbara För en keramikkopp skulle jag samla volym, material, mått, skötselråd, lagerstatus och leveransvillkor på produktsidan. Beskriv också naturliga variationer i handgjorda produkter. Skriv inte ”diskmaskinssäker” om tillverkaren bara rekommenderar handdisk. För en tjänst gäller samma princip: ange vem tjänsten passar, vilka moment som ingår och vilka förutsättningar kunden behöver uppfylla. Ett tydligt undantag hjälper kunden att välja och minskar utrymmet för missförstånd. Tillför eget underlag Studien GEO: Generative Engine Optimization av Aggarwal och medförfattare, accepterad till KDD 2024, undersökte innehållsändringar i generativa sökmiljöer. Forskarna rapporterade förbättrad synlighet i sina tester och varierande effekt mellan ämnesområden. Det stödjer försök med tydligare belägg och framställning, men ger ingen garanti för ChatGPT Search i Sverige. Använd därför egna mätningar, dokumenterade processer och verifierbara specifikationer där du faktiskt har dem. Om du jämför produkter, förklara urvalet och kriterierna. Ange när uppgifterna kontrollerades och rätta dem när förutsättningarna ändras. Uppdatera rätt sida Låt återkommande frågor förbättra en befintlig produkt-, kategori- eller tjänstesida innan du skapar en ny artikel. En separat guide passar när frågan kräver en utförlig förklaring. Länka då guiden till det relevanta erbjudandet med en beskrivande länktext. Undvik nästan identiska artiklar för varje formulering. Samla närliggande frågor på samma sida när de hör till samma beslut. Läs sedan sidan som en köpare: finns det tillräcklig information för nästa steg? Hur stärker du företagets trovärdighet utanför webbplatsen? Gör företaget konsekvent beskrivet och sök relevanta, sakliga omnämnanden där kunder redan bedömer alternativ. Målet är att andra ska kunna kontrollera vad du erbjuder och för vem. Kontrollera först företagsnamn, specialistområde och kontaktuppgifter på egna sidor och befintliga profiler. Ett konsultföretag som beskriver sig olika i varje kanal blir svårare att bedöma. Använd samma grundfakta och anpassa detaljerna till respektive sammanhang. Jag skulle prioritera externa källor som bidrar med verkligt underlag: en branschorganisations medlemsprofil, en återförsäljares produktuppgifter, en oberoende recension eller ett expertbidrag med redovisad kompetens. Bedöm varje möjlighet utifrån läsarnas relevans och vad publiceringen faktiskt säger. Kunden jämför produkter Lämpligt innehåll eller underlag: Jämförelse med tydliga urvalskriterier. Vad kunden behöver bedöma: Skillnader i användning och egenskaper. Kunden söker lokal hjälp Lämpligt innehåll eller underlag: Företagsprofil och geografiskt tjänsteområde. Vad kunden behöver bedöma: Tillgänglighet på rätt plats. Kunden tvekar inför köp Lämpligt innehåll eller underlag: Sakliga recensioner och leveransinformation. Vad kunden behöver bedöma: Erfarenheter och praktiska villkor. Kunden söker specialistkunskap Lämpligt innehåll eller underlag: Expertbidrag och dokumenterad metod. Vad kunden behöver bedöma: Kompetens för den aktuella frågan. Be om ärliga recensioner från verkliga kunder. Ge inte instruktioner om vilket omdöme de ska skriva. När en invändning återkommer, förbättra den relevanta sidan med ett svar som framtida kunder kan läsa före köp. Det här är rekommendationer för trovärdighet och informationskvalitet. O
먼저 결론부터 봅시다. 감독자 없는 워커는 권한 프롬프트에 도달할 수 있으면 안 됩니다. 이번에 이 원칙을 어겨서, 병렬 AI 워커 3개가 아무도 보지 않는 1. Yes / 2. No 다이얼로그 앞에서 97분간 멈춰 있는 장애를 겪었습니다. 그리고 이 문제를 30년 된 메일 서버 패턴(maildir)으로 풀었습니다. 워커는 멈췄는데, 밖에서는 "작업 중"으로 보였다 저는 Claude Code 세션 여러 개를 tmux로 병렬 실행하는 오케스트레이션 플러그인을 운영하고 있습니다. 어느 날 런 하나를 확인하러 터미널을 열었더니, 워커 3개가 전부 같은 지점에서 정지해 있었습니다. 장애 리포트에 남긴 원문 그대로입니다: All three workers finished their implementation, then stalled at the same final step — the impl_done status write — sitting on a 1. Yes / 2. No dialog. They sat there ~1h37m before I looked at a terminal. 워커들을 붙잡은 건 제가 직접 만든 보안 훅이었습니다: Hook PreToolUse:Bash requires confirmation for this command: Writing into the main worktree (/.../repo) from a linked worktree — a worker can corrupt the shared checkout. [plugin:guardrails] 워커가 자기 워크트리 밖, 코디네이터 체크아웃의 상태 디렉토리에 완료 신호를 쓰는 프로토콜이었는데, 그 쓰기가 "교차 워크트리 쓰기"로 판정돼 확인 프롬프트에 걸린 겁니다. 헤드리스 세션이라 그 프롬프트에 답할 사람은 아무도 없었습니다. 더 고약했던 건 세 가지였습니다. 첫째, 상태 파일이 유일한 완료 신호 라서, 그 쓰기가 막히니 폴러는 계속 "still working"만 보고했습니다. 멈춘 워커가 밖에서는 정상 작업 중으로 보인 거죠. 둘째, 훅은 경로 기준이라 상태 디렉토리를 단순히 cat 으로 읽으려던 워커도 걸렸습니다. 셋째가 진짜 데드락인데 — 수정된 프로토콜을 메시지 큐로 보내줘도, 키보드 입력을 기다리며 멈춘 워커는 그 메시지를 읽을 수 없습니다. 결국 터미널에 직접 2 (거부)를 넣어서야 풀렸습니다. 우리만의 문제가 아니었다 리서치를 해보니 이건 알려진 장애 클래스였습니다. Claude Code 쪽에는 "permission prompts invisible, causing agent deadlock"(anthropics/claude-code#25254), opencode 쪽에는 권한이 "ask"면 헤드리스에서 무한 행이 걸린다는 이슈(anomalyco/opencode#16367, #14473)가 있었습니다. Anthropic 공식 가이드의 처방도 같은 방향이었습니다 — 헤드리스 파이프라인은 프롬프트가 아예 발생하지 않도록 권한을 사전 스코핑하라. 그런데 저희 경우는 권한 스코핑만으로는 부족했습니다. "코디네이터 체크아웃에 쓰기"라는 행위 자체가 신뢰 경계를 넘는 설계였으니까요. 그래서 프로토콜을 갈아엎기로 했습니다. 30년 된 메일 서버에서 답을 찾다 qmail의 maildir 패턴이 정확히 이 모양의 문제를 풉니다. 각 생산자는 자기 tmp/ 영역에만 쓰고, 원자적 rename으로 넘기며, 파일 하나에 작성자는 하나 — 그래서 잠금 없이도 경합이 없습니다. 이걸 그대로 이식했습니다. 워커는 자기 워크트리 안의 상태 파일에만 쓰고, 코디네이터 쪽 수집기가 주기적으로 긁어서 정본 디렉토리로 원자 복사 합니다. 워커는 이제 자기 영역 밖을 절대 건드리지 않으니 프롬프트에 도달할 경로 자체가 사라집니다. 수집기( collect-status.sh )의 계약은 주석에 이렇게 못 박았습니다: # Each in-graph record is copied into <canonical-status-dir>/<task>.json via # tmp+mv when: # - no canonical record exists yet, or # - the canonical .phase is not done/failed (tombstone — never overwritten), AND # - the worker record's .updatedAt is strictly greater than the canonical's tmp에 쓰고 mv 로 원자 교체, done/failed는 묘비(tombstone)로 취급해 뒤늦게 도착한 "running"이 덮어쓰지 못하게 — maildir의 규율 그대로입니다. 재설계를 그 오케스트레이션으로 구현했더니 재미있는 건 이 수정 자체를 문제의 그 오케스트레이션 시스템으로 구현했다는 점입니다. 그리고 리뷰 단계에서 제 구현의 결함이 하나 잡혔습니다. 태스크 필터 함수였는데요: # before — 리뷰에서 blocking 판정 is_task() { echo "$ids" | grep -qx "$1"; } # after is_task() { echo "$ids" | grep -Fqx -- "$1"; } grep -x 는 패턴을 정규식으로 해석합니다. 태스크 id에 . 같은 메타문자가 있으면, 병행 중인 다른 런의 근사-일치 파일 ( t1-status vs t1.status )이 필터를 뚫고 정본 디렉토리에 섞여 들어올 수 있었습니다. -F (리터럴 비교) 한 글자 차이입니다. 회귀 가드도 같이 넣었습니다: @test "r1 F1: a regex-metacharacter id does not fuzzy-match a near-miss basename" { graph '{"tasks":[{"id":"t1-status","deps":[]}]}' worker_status other-run t1.status planning 2026-01-01T00:00:00Z run sh "$CS" "$G" "$CDIR" "$WROOT" [ "$output" = "collected=1 skipped=0 foreign=1" ] [ ! -e "$CDIR/t1.status.json" ] } 통합 단계에서 실패 1건이 더 나왔는데(888개 중 887 통과), 원인은 버그가 아니라 제 계획의 검증 목록 누락이었습니다. 문서의 절차 순서를 문자열로 핀하는 기존 테스트가 있었는데, 절차를 고치면서 그 테스트를 검증 목록에 안 넣은 거죠. 테스트를 현대화하고 재실행해서 최종 888/888 그린, 독립 리뷰어 승인 후 머지했습니다. 배운 것 워커의 유일한 완료 신호가, 프롬프트를 유발할 수 있는 도구 호출에 의존하면 안 됩니다. 신호 경로가 막히는 순간 장애가 "정상 작업 중"으로 위장되니까요. 그리고 신뢰 경계를 넘는 쓰기는 "ask"가 아니라 결정적으로 deny 되어야 합니다. deny는 워커가 반응할 수 있는 명시적 에러를 남기지만, ask는 아무도 없는 방에서 손을 든 채 영원히 기다리게 만듭니다. 파일 기반 IPC의 고전 패턴이 AI 오케스트레이션에 이렇게 그대로 이식된다는 것도 수확이었습니다. 에이전트 인프라를 만들고 계시다면, 새 프로토콜을 발명하기 전에 maildir 문서(cr.yp.to/proto/maildir.html)를 한 번 읽어보시길 권합니다. 다음 목표는 이런 "프롬프트 도달 가능 경로"를 런 시작 전에 정적으로 검출하는 프리플라이트 체크입니다.