home.social

Search

1000 results for “Data_Ranger”

  1. TL;DR — Most RAG systems bake access control into the vector index at embedding time, treating permissions like content freshness. But permissions and content decay on completely different timescales, and conflating them creates a security lag where revoked access still returns results. The fix is separating indexing (eventually consistent) from authorization (must be synchronous and checked at query time against the lakehouse's actual governance layer).


    Every RAG-over-enterprise-data writeup talks about freshness like it's one problem: how quickly do new documents show up in the index. That framing is incomplete in a way that matters a lot more than most teams realize. There are two independent clocks running in any serious RAG system — a content clock and a permissions clock — and almost every production pipeline treats them as the same clock. They aren't. They don't tick at the same rate, they don't fail the same way, and conflating them is how you end up serving a terminated contractor's confidential documents through a chatbot three weeks after their badge stopped working.

    Two clocks, not one


    Content freshness is forgiving. If a Q3 revenue doc gets re-embedded six hours after it lands in the lakehouse, nobody gets hurt. Worst case, someone asks about numbers that just changed and gets a slightly stale answer. That's an accuracy problem, and accuracy problems are recoverable — you can caveat the answer, cite the timestamp, or just wait for the next index run.

    Permission freshness has no such grace period. The moment someone's access to a dataset is revoked — role change, offboarding, a client's NDA scope narrowing — any system that still surfaces content under that identity's query is not stale, it's leaking. There's no acceptable SLA for "we'll stop showing you confidential merger documents sometime in the next sync cycle." Content can be eventually consistent. Authorization has to be effectively synchronous.

    Most RAG architectures don't make this distinction anywhere in the stack. They pull ACLs out of the lakehouse at indexing time, flatten them into metadata fields on the vector records — allowed_roles, department, classification — and then filter on that metadata at query time. That metadata is a snapshot. It was true when the embedding job ran. It is not guaranteed to be true now, and nothing in the retrieval path checks.

    Why baked-in ACLs are the wrong shape


    Denormalizing permissions into the vector index feels efficient. It avoids a join at query time, it's fast, and it looks like a solved problem because the filter clause is right there in the retrieval query. But it inherits every weakness of cached authorization data: it's correct until it isn't, and nothing tells you when it stops being correct.

    Consider how permission changes actually propagate in a lakehouse. Unity Catalog grants, Ranger policies, row-level security tags — these live in a governance layer that changes independently of your ingestion pipeline. A revoke is an event in that system. If your vector index only re-syncs permission metadata on its regular reindex cadence — nightly, hourly, whatever — then every revoke has a blast radius equal to that cadence. A once-a-day reindex means a once-a-day security hole, every day, for every revocation that happens in between.

    It gets worse with negative permissions. Granting access and then re-embedding is relatively safe — worst case, a document shows up late. Revoking access and relying on the next reindex to remove it is the dangerous direction, because the system fails open by default. Nobody designs for "my index should actively drop documents it already has," so it usually doesn't happen until someone notices, which is the wrong time to notice.

    Index for retrieval, authorize at the boundary


    The architectural fix is to stop treating permission filtering as a retrieval-time metadata match and start treating it as an authorization check that happens at the boundary, right before content crosses from "candidate" to "shown to the user." That means two distinct passes:

    Retrieval produces candidates based on semantic relevance, with no claim about who's allowed to see them. This is the part that can be eventually consistent, cached, approximate — all the usual vector search tradeoffs apply because the cost of being wrong is a quality miss, not a security miss.

    Authorization then takes those candidates and checks them against the live source of truth — the lakehouse's actual governance layer, queried synchronously, for this user, right now. Not a copy. Not a snapshot baked in at embedding time. The real grants table, the real row-level policy, evaluated at the moment of the request.

    This sounds expensive, and people avoid it for that reason, but it's usually a narrow, well-indexed lookup against a governance system that's built to answer exactly this question quickly. The expensive part of RAG is the embedding search and the generation call. A permission check against a catalog's grants table for a handful of candidate document IDs is comparatively cheap, and it's the one part of the pipeline where "cheap but occasionally stale" is not an acceptable tradeoff.

    The organizational version of this bug


    This isn't purely a technical oversight — it's also an ownership gap. Governance teams own the ACL model in the lakehouse. ML and platform teams own the vector index and retrieval pipeline. In most organizations, these teams don't share a contract about what "permission freshness" means, so the ML team does the obvious thing: pull a snapshot of permissions at index time and treat it like any other field to be refreshed on the next ETL run.

    Nobody signed off on that being the security model. It just became the security model by default, because the pipeline that builds the index is the pipeline that decided how often permissions get checked. That's backwards. The team that owns access control should be setting the consistency requirement, and the retrieval system should be built to meet it — not the other way around, where indexing cadence quietly becomes the de facto authorization SLA.

    What this means for how you build the pipeline


    Practically, this argues for a specific split in your lakehouse-to-RAG pipeline. Keep the vector index dumb about identity — it should know what a document is about, not who's allowed to see it. Keep a thin, fast, synchronous authorization layer that queries the governance system directly for every retrieval request, scoped to the handful of candidate documents the vector search returned. Instrument that layer separately from your indexing pipeline, with its own latency budget and its own alerting, because its failure mode is categorically different: indexing lag produces stale answers, authorization lag produces data exposure.

    Freshness and permissions get talked about together so often that it's easy to assume they need the same fix: index more often, sync faster, tighten the loop. They don't. One of them needs a faster batch job. The other needs to stop being a batch job at all.#ai #machinelearning #devops #programming #software #coding #development #engineering #inclusive #community
    RAG Over Enterprise Lakehouse Data Has a Permissions Clock Problem

  2. CW: russian war in Ukraine, fuck your yandex data center

    Why the fuck do Westerners SUDDENLY care about a SINGLE (and not a first one) partially destroyed data center in russia?

    There are two other Yandex data centers droned recently, for example.

    Or, like, half a dozen of data centers in Kyiv, damaged in recent weeks. Not important?

    Or multiple thousands of civilian infrastructure nodes, humanitarian services, apartment buildings - targeted in Ukraine daily for fifth year in a row?

    The whole range from a famliy house to a highrise, to a kindergaden, to a electrical grid point of a megapolis, to the Dnipro Dam or the nuclear power plant (chose one which you care more - semi-active in Zaporizhzhia or the Ark in Chornobyl).

    Or, what a concent, raise a word about killed and injured on (again) daily basise people of Ukraine.

    #War #russiaIsATerroristState

  3. Debug Totals Lie at Release: An Opt-Split Gate for C++ Patch Evals


    The failure mode is ordinary, and it hides in a green log. A grader accepts a C++ patch because the debug binary prints 18432. A later release build of the same sources prints 18416. Nobody edited the prompt between those two runs. The optimizer met a signed addition that had already left the representable range.

    That split is a silent regression. A single golden print, captured under one flag set, cannot see it.

    This note describes an opt-split gate for AI C++ patches. One frozen input tape, one hand-written oracle, and the candidate built at -O0 and -O2. The gate fails when the oracle stays stable and the candidate does not. A prompt hash pin stops a later draft from changing the test without a recorded edit.

    What a single print misses


    Generated C++ often looks finished inside a driver that prints one number. The driver and the patch share a translation unit. Warnings are quiet, or they were never enabled. The build uses whatever optimization the local default happens to be, which is frequently closer to -O0 than to the flags a package will ship.

    Signed overflow, a read of an uninitialized scalar, and a dependency on evaluation order can all survive that setup. A second flag set sometimes keeps the arithmetic inside the range the oracle demands. Sometimes it stops hiding the bug. The opt-split gate does not prove the absence of undefined behavior. It catches the cheaper mismatch: debug output and release output disagree, while a checked oracle prints the same bytes twice.

    Files the gate owns


    Four inputs define a run, and none of them is a dashboard screenshot. prompt.txt is the only prose the draft step may read. prompt.pin stores the SHA-256 of that file from the last accepted wording change. tape.txt lists signed integers, one token per line, and ends with END.

    oracle.cpp is written by a person. candidate.cpp is the patch under test, and it must export the same signature the oracle exports. The contract stays narrow so the grade is about values, not about prose.

    // contract.hpp
    #pragma once
    #include <cstdint>
    #include <optional>

    std::optional<std::int64_t> fold_checked(const std::int64_t* data, std::size_t n);

    A returned integer is the exact sum. std::nullopt means the fold is rejected. The candidate is scored against the oracle decision, not against a golden string sitting in the prompt.

    Step 1. Pin the prompt before a draft exists


    A changed prompt is a changed test, even when every tape byte is identical. The pin check refuses to grade on drift. It does not try to be clever about whitespace.

    python3 - << 'PY'
    import hashlib, pathlib, sys
    prompt = pathlib.Path("prompt.txt").read_bytes()
    digest = hashlib.sha256(prompt).hexdigest()
    pin = pathlib.Path("prompt.pin")
    if not pin.exists():
    pin.write_text(digest + "\n", encoding="ascii")
    print("pinned", digest)
    sys.exit(0)
    expected = pin.read_text(encoding="ascii").strip()
    if digest != expected:
    print("prompt pin mismatch")
    print("expected", expected)
    print("actual ", digest)
    sys.exit(2)
    print("prompt pin ok", digest)
    PY

    Treat a mismatch as a harness failure, not as a patch failure. Update prompt.pin only in a commit that quotes the new wording. Nightly jobs must not rewrite the pin to make themselves green.

    Step 2. Freeze the tape outside the driver


    The driver reads tape.txt, calls fold_checked, and prints REJECT or a decimal integer. It contains no expected answers. A model that can see the golden line inside the driver will often echo it, and the echo will match at every optimization level.

    // tape_driver.cpp
    #include "contract.hpp"
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <vector>

    int main() {
    std::ifstream in("tape.txt");
    std::vector<std::int64_t> data;
    std::string tok;
    while (in >> tok) {
    if (tok == "END") {
    break;
    }
    data.push_back(std::stoll(tok));
    }
    std::optional<std::int64_t> got = fold_checked(data.data(), data.size());
    if (!got) {
    std::cout << "REJECT\n";
    return 0;
    }
    std::cout << *got << "\n";
    return 0;
    }

    Start with three tapes, and keep them in separate files. One sum fits in 64 bits. One sum crosses the top of the signed 64-bit range. One file contains only END, the empty range.

    The samples below are unexecuted fixtures until a local compiler has produced the four binaries. The method does not depend on a hosted runner.

    10
    20
    30
    END

    9223372036854775807
    1
    END

    Step 3. Build both sides at two levels


    Hold the standard, the warning set, and the include path fixed. Change only the optimization flag. Record the compiler identity before the first object file exists, so a later green row can be tied to a toolchain.

    mkdir -p out
    g++ --version | head -n 1 | tee out/compiler.txt
    CXXFLAGS="-std=c++20 -Wall -Wextra -Werror -I."
    g++ $CXXFLAGS -O0 -o oracle_o0 oracle.cpp tape_driver.cpp
    g++ $CXXFLAGS -O2 -o oracle_o2 oracle.cpp tape_driver.cpp
    g++ $CXXFLAGS -O0 -o cand_o0 candidate.cpp tape_driver.cpp
    g++ $CXXFLAGS -O2 -o cand_o2 candidate.cpp tape_driver.cpp

    A candidate that fails to compile receives a compile grade, and the matrix stops. Partial binaries are not compared. An oracle that fails to compile means the gate is misconfigured. That result is not a patch defect.

    The oracle itself should be boring. This implementation is a proposal for the fixture, not a claim that a model emitted it, and not a measured result.

    #include "contract.hpp"
    #include <cstdint>
    #include <limits>
    #include <optional>

    std::optional<std::int64_t> fold_checked(const std::int64_t* data, std::size_t n) {
    __int128 acc = 0;
    for (std::size_t i = 0; i < n; ++i) {
    acc += data[i];
    if (acc > std::numeric_limits<std::int64_t>::max()) {
    return std::nullopt;
    }
    if (acc < std::numeric_limits<std::int64_t>::min()) {
    return std::nullopt;
    }
    }
    return static_cast<std::int64_t>(acc);
    }

    Run each binary from a directory that contains only the chosen tape.txt. Capture stdout bytes. Do not trim, and do not pass the text through a shell that rewrites newlines.

    ./oracle_o0 > out/oracle_o0.txt
    ./oracle_o2 > out/oracle_o2.txt
    ./cand_o0 > out/cand_o0.txt
    ./cand_o2 > out/cand_o2.txt
    cmp -s out/oracle_o0.txt out/oracle_o2.txt

    Step 4. Score a four-cell matrix


    Compare the files with cmp. A missing newline is a mismatch. A numeric parser that forgives spaces will hide the drift this gate exists to catch.

    Oracle -O0 vs -O2Candidate vs oracle at -O0Candidate vs oracle at -O2Gradedifferanyanyoracle unstable; do not score the patchmatchdifferanyfunctional missmatchmatchdifferopt-split failmatchmatchmatchpass for this tape


    The third row is the silent regression. The patch met the contract in the debug build and broke it, or changed it, at -O2. Store the four stdout files beside the prompt hash. A later job that flips only cand_o2 is a regression even when the debug line still matches the earlier example.

    Repeat the matrix for every tape. The patch passes the gate only when every tape passes. One opt-split fail fails the run. Do not average rows into a soft score. A mean will bury a release-only break under three comfortable debug matches.

    Step 5. Attach a draft host without baking in its limits


    Disclosure: This article was prepared as part of MonkeyCode's product outreach.

    The matrix does not need a hosted model. A local editor can drop candidate.cpp into the tree, and the four g++ lines still apply. MonkeyCode enters only when a team wants a draft step or a remote build host. It is an open-source project. Operator materials describe free model access and a free server option. Both are availability claims, so confirm them in the current project docs on the day of the run.

    Keep the draft blind. It may read prompt.txt and contract.hpp. It may not read oracle.cpp, the tapes, or earlier stdout. Showing the oracle to the model turns the grade into a transcription exercise, and transcription will pass at both optimization levels for the wrong reason.

    Do not hard-code a token allowance, a machine size, or a rental duration into prompt.pin or the grader. Those numbers move, and a stale ceiling will outlive the plan that published it. If the account cannot start a build that day, fail the job closed and leave the previous pin untouched.

    The free server, when it is actually available, is a fit for the four compile-and-run lines. The pass/fail rule should stay in a script the reviewer can diff on a laptop. A clean split is local pin check, remote compile, local grade. The host returns stdout files and the compiler version line, and the reviewer's copy of the matrix script assigns the grade.

    Teams that already keep prompt.pin can send the frozen prompt to the current free model access and run this opt-split matrix on the free server, after reading that day's limits in the project docs. The grade script should still run unchanged if that host is offline.

    Limitations, and who should skip the gate


    Agreement across -O0 and -O2 is a screen, not a proof. Undefined behavior can survive both flag sets, and it can disappear under both. Sanitizer builds belong in a separate gate. This matrix also ignores throughput. A patch may pass every tape and still be too expensive to ship, so grade cost with a different fixture.

    Skip the approach when the specification allows divergence under fast-math flags, or when the contract is approximate and a tolerance is the real oracle. Skip it when the oracle and the candidate are supposed to reject different edges. That mismatch is a spec argument, not a regression.

    Skip it for patches that cannot be built as one extra translation unit, such as a plugin ABI or a generated lexer. The sample driver uses std::stoll and will throw on a corrupt tape. That is a harness bug, and the run should fail before any patch grade is written.

    The __int128 accumulator is a GCC and Clang extension, not portable C++. On a toolchain without it, replace the oracle with a checked add written in standard C++. Pin that choice next to the compiler version line. Otherwise two machines will disagree about the oracle and the matrix will blame the patch.

    What the log must hold


    Each run record needs the prompt hash, the compiler version string, the four flag lines, and the stdout hashes. A green debug line without those fields is how a single total survives review. The release build was never graded, so nobody had a file to open.

    The opt-split gate makes that file mandatory. Same tape, two optimization levels, and a human oracle that does not travel inside the prompt. When the release total moves and the oracle does not, the patch does not ship.#cpp #testing #ai #programming #software #coding #development #engineering #inclusive #community
    Debug Totals Lie at Release: An Opt-Split Gate for C++ Patch Evals

  4. DATE: October 12, 2026 at 02:00PM
    SOURCE: PSYPOST.ORG

    ** Research quality varies widely from fantastic to small exploratory studies. Please check research methods when conclusions are very important to you. **
    -------------------------------------------------

    TITLE: Researchers identify a factor linked to how much happier couples are than singles

    URL: psypost.org/researchers-identi

    People in romantic relationships typically report higher life satisfaction than single people, but a new study of more than 380,000 adults in Great Britain suggests that the size of this gap varies depending on where people live. The gap tended to be wider in areas where romantic partnerships were more common, mostly because partnered people in those areas reported higher satisfaction. The research was published in Psychological Science.

    Relationship status simply refers to whether a person is currently in an intimate partnership or is single. Life satisfaction is an evaluation of how positive or fulfilling a person finds their overall life circumstances. In social psychology, the idea of person-culture match suggests that people experience higher well-being when their individual traits, beliefs, or lifestyle match the prevailing norms of their immediate community.

    Prior studies suggest that the size of the life-satisfaction gap between partnered and single people is not the same everywhere. Married people tend to report higher life satisfaction than unmarried people, but the size of that difference varies across countries and U.S. states, and one U.S. analysis found that marriage was more strongly tied to life satisfaction in states where more residents were married.

    Not every study has found a strong role for social norms, though: a 2012 study of 45 European countries found that a country’s family values had little bearing on the well-being gaps between partnership statuses, apart from a wider gap between divorced and married women in more family-oriented societies.

    Other research suggests that community-level norms can shape how individual life circumstances affect personal well-being. For example, earlier work by some of the same researchers, covered by PsyPost in 2024, found that in regions with higher obesity prevalence, individuals with obesity experienced less severe relationship and health disadvantages compared to low-prevalence regions.

    The current study aimed to bridge these lines of research to test whether local relationship rates relate to the well-being gap between singles and couples. “Many studies find that partnered people are happier than single people and such findings often read as evidence that romantic relationships are good for us,” lead researcher Tita Gonzalez Avilés of the Institute of Psychology at the University of Bamberg told PsyPost. “But the reasons behind this life satisfaction gap are not entirely clear. We wanted to shift the focus from the relationship itself to the regional contexts in which partnered and single people’s lives unfold.”

    The research team reasoned that in areas with high relationship rates, couples might feel more supported and aligned with local relationship norms. Single individuals, on the other hand, might feel more excluded or experience greater social pressure in environments where couplehood is the dominant pattern.

    To examine this question, the scientists analyzed data from the BBC Big Personality Test. The sample included 382,078 adults living across 379 local authority districts in Great Britain, administrative areas similar in size to counties in the United States. Participants answered questions about whether they were currently in an intimate relationship and rated their life satisfaction on a scale from one to seven.

    The researchers calculated regional relationship rates by determining the percentage of participants in each district who reported being in an intimate relationship. District relationship rates ranged from about 55 percent in one London borough to 80 percent in the district of Bolsover. To isolate the role of local relationship rates, the authors controlled for individual characteristics including age, gender, education, employment, income, health, and personality traits, as well as district-level factors such as population density, median income, birth rates, median age, political leanings, and religious affiliation.

    Across Great Britain as a whole, partnered individuals reported higher life satisfaction than single individuals. Partnered people scored about half a standard deviation higher on life satisfaction, a difference the authors noted is comparable to differences tied to employment status or health. These findings are in line with research covered by PsyPost in 2024, which found that people in intimate relationships report higher emotional well-being and life satisfaction compared to singles.

    The results also align with research covered by PsyPost in 2025 that examined lifelong singlehood among primarily older adults and found lower life satisfaction among singles compared to partnered individuals.

    “Although life satisfaction varied across regions, partnered individuals consistently reported higher life satisfaction compared to single individuals on average,” Gonzalez Avilés noted. “So, while regional context contributes to people’s life satisfaction, it cannot fully account for the gap between these two groups.”

    When the researchers looked across regions, they found that the size of the gap varied based on the local relationship rate. In districts with the lowest relationship rates, the gap was 0.49 standard deviations; in districts with the highest rates, it was 0.63, an increase of nearly 29 percent. This widening gap was primarily driven by partnered individuals, who reported higher life satisfaction in high-relationship districts, while life satisfaction among single individuals remained relatively constant regardless of the local relationship rate.

    The district-level pattern held across several robustness checks. The association remained consistent when using official census marriage and cohabitation rates instead of survey-derived relationship rates, when applying broader regional controls, and when using stricter minimum thresholds for district sample sizes.

    In additional analyses that were not planned in advance, the researchers found that the gap was also larger in districts with lower median incomes, a higher share of votes to leave the European Union in the 2016 Brexit referendum, and more residents reporting a religious affiliation. In the more politically conservative and religious districts, the wider gap mainly reflected lower life satisfaction among single people. The authors note that they did not directly measure attitudes toward singlehood and describe their explanations for these patterns as speculative.

    “We expected single people to be less satisfied where many others are partnered but found no evidence for this,” Gonzalez Avilés said. “What seemed to be more important for the single people was not how many people are partnered but the prevailing regional attitudes toward singlehood (i.e., single people being less satisfied in more conservative and religious regions).”

    “Regional relationship norms and societal expectations can affect how partnered and single people evaluate their own life,” Gonzalez Avilés added.

    In an exploratory analysis that was not registered in advance, the researchers evaluated whether the pattern held at a neighborhood scale across 52,836 participants in 218 postal districts in London. In postal districts with the lowest relationship rates, the gap was 0.41 standard deviations, compared to 0.62 in districts with the highest rates, reflecting an increase of about 51 percent. As in the national sample, this difference was mainly driven by partnered residents reporting greater satisfaction in neighborhoods where relationships were common.

    The authors also examined whether people in high-relationship areas placed more importance on having a relationship. They found no evidence that couples or singles placed higher importance on being partnered in those areas. Single people in high-relationship areas actually placed slightly less importance on having a relationship, which the researchers speculate could reflect singles shifting their focus toward other life goals.

    As with all research, there are some caveats to consider. The sample consisted of online volunteers who chose to take a personality test between 2009 and 2011, and roughly 64 percent of the respondents were women. The data are also more than 15 years old. The authors did find that regional marriage rates in the survey closely mirrored 2011 census figures, which supports the accuracy of the geographic estimates.

    The overall regional effect was modest, and partnered people reported higher life satisfaction than singles even in districts with the lowest relationship rates. Because the data were correlational, the study cannot establish cause and effect. Happier couples might simply be more inclined to move to communities where relationships are more prevalent.

    “We did not test why partnered individuals were more satisfied in regions where romantic relationships were more common,” Gonzalez Avilés explained. “It may be that they have more positive experiences when living among many other couples, but it is also possible that happily coupled people are more likely to move to such regions.”

    The researchers tested this possibility by repeating their analysis using only individuals who still resided in the region where they grew up, which reduces the likelihood that migration explains the pattern. Future studies tracking people over time could provide better insight into whether moving or changing relationship status shifts life satisfaction. Scientists could also investigate whether specific mechanisms, such as tax, housing, or other policy advantages for couples, help explain why partnered people fare better in these environments.

    The findings are also based solely on Great Britain. Testing these relationships in other countries could help researchers determine whether similar regional patterns exist in different cultural and institutional settings.

    The study, “Ties That Bind, Places That Matter: The Life-Satisfaction Gap Between Partnered and Single Individuals Varies Across Regions,” was authored by Tita Gonzalez Avilés, Franz J. Neyer, Peter J. Rentfrow, and Tobias Ebert.

    URL: psypost.org/researchers-identi

    -------------------------------------------------

    Private, vetted email list for mental health professionals: clinicians-exchange.org

    Unofficial Psychology Today Xitter to toot feed at Psych Today Unofficial Bot @PTUnofficialBot

    -------------------------------------------------

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #LifeSatisfaction #CouplesHappiness #SinglesLife #RegionalNorms #RelationshipStatus #WellBeing #PsychScience #BBCBigPersonalityTest #SocialPsychology #BritainStudy

  5. Changelogs for One UI 9.0 [Galaxy A series]

    Samsung has released One UI 9.0 to the public, starting from the Galaxy S26 series in Korea. It provides you with an upgraded software experience on your Galaxy phone and an up-to-date Android 17 with new privacy and other features. Now, One UI 9.0 has become available for the Galaxy A devices, starting from the Galaxy A57.

    Below, you’ll find the changelogs for One UI 9.0 for the Galaxy A series devices, which is taken from the Galaxy A57. Please note that, depending on a device you’re using and region, some features may not be available.

    One UI 9

    Productivity and multitasking

    More customizable quick panel
    You can now rearrange and customize the controls in your quick panel even more than before. You can change the size of the brightness and volume sliders as well as the media player. You can also separate the sound mode button from the volume slider.

    Privacy, security, and device protection

    Warranty and care
    The new Warranty and care menu in settings lets you check your warranty information and access diagnostic checks and useful information for keeping your Galaxy in top condition.

    Lock down your phone quickly
    It’s now easier to securely lock your phone in a hurry. Just press and hold the Volume down and Side buttons at the same time or tap the Power button in the quick panel. This prevents biometrics from being used the next time you unlock your phone.

    Location access transparency
    Stay on top of your location privacy. A blue indicator will appear at the top of the screen when an app accesses your location. Tap the indicator in the quick panel to see which app it is.

    Samsung Health

    New look for Samsung Health
    Samsung Health has been redesigned to make your health data easier to understand. Enjoy clearer visuals, improved charts, and a more engaging experience to help you reach your health goals.

    Customize your Health home screen
    Resize cards and organize them by category, like Activity, Sleep, Mindfulness, and Nutrition, so your top priorities are easy to access.

    Log health data quickly
    It’s now easier to add your health information right from the Samsung Health home screen. You can log your mood, meals, and more. You can even use the camera for faster input.

    Advanced trend analysis
    Track your progress with improved trend charts in Samsung Health. View data in hourly, daily, or weekly intervals, pinch to zoom in for a closer look, and overlay multiple charts to compare your performance across different periods.

    Monitor changes in your sleep vitals
    Samsung Health helps you notice meaningful changes in your sleep health data. Use Galaxy Watch or Ring measurements to better understand your daily health patterns.

    Manage your heart health
    Track key health metrics and lifestyle factors that affect your heart. A daily score based on your sleep, exercise, BMI, and blood pressure helps you better understand your current heart health trends.

    Track your cardio load
    See how your workouts and activity impact your heart so you’ll know when to push harder and when to rest. Your target cardio load range adjusts daily based on your recent activity and training focus.

    Check your fitness index
    Your Fitness Index is an overall score calculated using five key fitness metrics: body composition, cardio, strength, flexibility, and endurance. Set a goal and unlock personalized insights tailored to your results.

    Keep your ears safe
    The new Hearing tracker monitors sound levels detected by your Galaxy Watch and headphone audio levels to help you manage your exposure to loud sounds.

    View your cycle and body rhythm
    Get a more personalized view of your cycle and body rhythm with new cycle tracking options. You can view your cycle information in your calendar and better understand your health patterns.

    Bixby

    Manage your conversations
    Keep your chats organized. Search them, rename them, or pin your favorites. You can also delete all of your past conversations at once.

    Bixby on the Home screen
    Add a Bixby widget to type or talk to Bixby or jump directly to your conversation history.

    Accessibility

    Discover new Accessibility features
    Check the What’s new menu in Accessibility settings to learn about and try the latest Accessibility features for your Galaxy.

    Text spotlight for easier reading
    Need a closer look? Tap any text on the screen to show it enlarged and highlighted in its own window. You can also customize the font size, colors, and other settings to match your preferences.

    Physical keyboard shortcuts
    Use shortcuts on your physical keyboard to access the Accessibility settings you need without touching the screen.

    Mouse keys enhancements
    New options are available when using your keyboard for mouse interactions including speed and acceleration control. You can also use the keyboard’s number pad to point and click.

    Replace swipe with single tap
    The Replace swipe with single tap option is now located in the Dexterity and interaction menu instead of the Assistant menu for easier access.

    Select to speak
    Get quick audio readouts without turning on full TalkBack. With the new Select to speak feature, you can select an item on your screen, like text or an image, and hear it read or described out loud.

    Improved TalkBack updates
    TalkBack updates can now be applied with a simple app update from the Play Store, helping you get the latest accessibility features and enhancements.

    Even more improvements

    New Lock screen clock
    The default clock on your Lock screen has been redesigned with a cleaner and more modern look that adapts to match your wallpaper.

    To learn more about One UI 9.0, consult this article.

    #A57 #Android #Android17 #Android17C #Android17CinnamonBun #AndroidCinnamonBun #CinnamonBun #GalaxyA57 #news #oneUi #OneUI9 #OneUI90 #Samsung #SamsungGalaxyA57 #smartphone #Tech #Technology #update
  6. DATE: October 12, 2026 at 06:00PM
    SOURCE: PSYPOST.ORG

    ** Research quality varies widely from fantastic to small exploratory studies. Please check research methods when conclusions are very important to you. **
    -------------------------------------------------

    TITLE: Musicians are less prone to the ventriloquism illusion, study finds

    URL: psypost.org/musicians-are-less

    An experiment comparing musicians and nonmusicians found that musicians tend to be less susceptible to the ventriloquism effect. When a sound came from one location and a visual flash from another, musicians’ judgments of where the sound came from were pulled less toward the flash than nonmusicians’ judgments were. The paper was published in the Journal of Experimental Psychology: Human Perception and Performance.

    The ventriloquism effect is a multisensory illusion in which a sound is perceived as coming from the location of a nearby visual stimulus rather than from its true source. It occurs because the brain normally combines information from different senses and gives greater weight to vision when judging where something is located.

    This ability to integrate sights and sounds is essential in everyday life, but the brain must also recognize when sensory signals come from different sources and should remain separate. Musical training may be especially relevant to this process because musicians spend years learning to coordinate highly precise auditory, visual, and motor information. Previous studies have found that musicians are better than nonmusicians at detecting mismatches between simple sounds and visual events, and two earlier experiments by the same team found that musicians showed less ventriloquism when asked to locate only the sound.

    Study author Matthew Paul O’Donohue of Queensland University of Technology in Australia and his colleagues wanted to understand why. Musicians might be less susceptible to the illusion because they perceive sounds or sights more precisely, or because they have a weaker built-in expectation that a sound and a flash come from the same source. Based on their earlier work, the researchers predicted, in a plan registered before data collection, that the second explanation would hold.

    Study participants were 35 musicians and 35 nonmusicians, most of them first-year psychology students. The musicians averaged 22 years of age and the nonmusicians 20, and each group included 26 women. Musicians were defined as people with at least 7 years of experience playing an instrument who had played for an average of 1 hour a week over the past 12 months; on average, they had played their main instrument for about 12 years. Nonmusicians had no more than 12 months of experience playing an instrument outside school and no more than 2 years of compulsory music lessons in school.

    Participants sat in a dark room facing a screen that hid five speakers. On each trial, a brief flash, a burst of noise, or both appeared from one of five positions along a horizontal line, and participants used a mouse to mark where each stimulus had come from. When both appeared, participants located each one separately, which required them to divide their attention between hearing and vision. On these combined trials, the flash and the sound came from the same position only 20% of the time.

    Participants completed the full set of 420 trials twice. Before the second run, they were told that the flash and the sound came from the same location only 20% of the time, and they were reminded of this at the start of each block. This allowed the researchers to test whether a simple instruction could change people’s expectations, and whether musicians’ advantage stemmed from assumptions formed during the experiment itself, in which case the instruction should have erased the difference between the groups.

    Musicians and nonmusicians were equally precise at locating the flash or the sound when only one was presented. For both groups, flashes were located less consistently the farther they appeared from straight ahead.

    When both stimuli were presented, musicians’ sound judgments were pulled about 1.6 degrees less toward the flash than nonmusicians’ were, on average. This difference was modest; it held up in one of the two statistical approaches the researchers used but fell just short in the other. After participants learned the 20% figure, the ventriloquism effect shrank overall, but musicians still showed less of it than nonmusicians.

    To explain these results, the researchers used a mathematical model of how the brain decides whether to combine information from two senses. The model attributed the group difference to musicians’ lower prior expectation that the sound and the flash came from the same place, rather than to differences in how precisely they could hear or see. The instruction lowered this expectation overall, but nearly all participants who had started out with an expectation below 20% raised it, suggesting that people adjusted their expectations to match the information they were given.

    “Our results suggest that musicians tend to exhibit less spatial ventriloquism than nonmusicians even when distributing their attention across audition and vision. … Finally, we have shown that this prior expectation changes when participants are informed of the true probability of a common location for the stimuli, demonstrating that top–down factors can exert a strong influence on this Bayesian prior,” the study authors concluded.

    The study contributes to the scientific understanding of the ventriloquism effect. However, because the researchers compared existing musicians with nonmusicians rather than assigning people to musical training, the study cannot show that musical training itself reduces the illusion, as opposed to other traits that differ between the groups. The difference between musicians and nonmusicians was also small, and numerically much smaller than in the team’s earlier experiments, in which participants only had to locate the sound.

    The authors also note that the musicians played a wide range of instruments, and that some subgroups, such as orchestral musicians, might show stronger auditory spatial skills or combine visual cues differently. In addition, it is not yet known whether the instruction changed what participants perceived or simply changed how they chose to respond.

    The paper, “A Multisensory Causal Inference Prior is Attenuated in Musicians and is Further Attenuated Following Instruction,” was authored by Matthew Paul O’Donohue, Naohide Yamamoto, Brian Odegaard, and Philippe Lacherez.

    URL: psypost.org/musicians-are-less

    -------------------------------------------------

    Private, vetted email list for mental health professionals: clinicians-exchange.org

    Unofficial Psychology Today Xitter to toot feed at Psych Today Unofficial Bot @PTUnofficialBot

    -------------------------------------------------

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #MusiciansVsVentriloquism #MultisensoryIntegration #AuditorySpatialSkills #VentriloquismEffect #MusicalTraining #BayesianPerception #CrossmodalPerception #ExperimentResults #SoundLocation #VisualAuditoryIllusion

  7. Embeddings & Vector Search


    A deep-dive walkthrough of embeddings and vector search — covering what embeddings are and how text embeddings are produced, semantic similarity and cosine similarity (with the math and the .NET code), exact vs. approximate similarity search, what vector databases are for, hands-on treatment of Azure AI Search, PostgreSQL with pgvector, Redis vector search, and MongoDB vector search, and hybrid search — combining keyword and vector retrieval with Reciprocal Rank Fusion.

    Table of Contents


    1. Introduction
    2. What Are Embeddings?
    3. Text Embeddings
    4. Semantic Similarity
    5. Cosine Similarity
    6. Similarity Search
    7. Vector Databases
    8. Azure AI Search
    9. PostgreSQL + pgvector
    10. Redis Vector Search
    11. MongoDB Vector Search
    12. Hybrid Search
    13. Choosing a Vector Store
    14. Putting It Together: An Ingestion and Query Pipeline
    15. Common Pitfalls
    16. Quick Reference Table
    17. Conclusion


    Introduction


    Traditional search matches words: a query for "reset my password" finds documents containing those words, and misses a perfectly relevant page titled "Recovering account access." Vector search matches meaning. It does this by converting text (or images, audio, products, users) into lists of numbers called embeddings, arranged so that items with similar meaning end up close together. Finding relevant content then becomes a geometry problem: find the nearest points to the query.

    EmbeddingClient client = new("text-embedding-3-small", apiKey);

    ReadOnlyMemory<float> query = client.GenerateEmbedding("How do I reset my password?").Value.ToFloats();
    ReadOnlyMemory<float> doc1 = client.GenerateEmbedding("Steps for recovering account access").Value.ToFloats();
    ReadOnlyMemory<float> doc2 = client.GenerateEmbedding("Quarterly financial results for Q3").Value.ToFloats();

    float s1 = TensorPrimitives.CosineSimilarity(query.Span, doc1.Span); // high — same meaning, different words
    float s2 = TensorPrimitives.CosineSimilarity(query.Span, doc2.Span); // low — unrelated

    That is the whole idea: embed, compare, rank. Everything else in this guide is about doing it at scale (millions of vectors), fast (approximate indexes), correctly (filtering, hybrid search), and inside the database you already run — or a dedicated one. Embeddings are also the foundation of retrieval-augmented generation (RAG), which this series' LLM Application Development guide covers as an application pattern; this guide is the retrieval engine underneath it. The concept of embeddings is introduced in this series' AI/ML Fundamentals guide.

    A note on versions and model names. Embedding model names, dimensions, SDK method names, and database feature availability change often. Model names here (text-embedding-3-small and so on) are examples, and the SDK samples target recent package versions — verify against the versions you install and the current documentation of each product.


    1. What Are Embeddings?

    A learned numeric fingerprint of meaning


    An embedding is a fixed-length list of floating-point numbers (a vector) that represents an item so that similar items have similar vectors.

    "dog" -> [ 0.12, -0.48, 0.33, ..., 0.07 ] (hundreds to thousands of numbers)
    "puppy" -> [ 0.10, -0.45, 0.35, ..., 0.05 ] <- very close to "dog"
    "invoice" -> [-0.61, 0.22, -0.09, ..., 0.40 ] <- far from both

    You can think of each embedding as a point in a high-dimensional space (say, 1,536 dimensions). Nobody assigns the individual numbers meaning — a neural network learns them during training so that the geometry encodes semantic relationships: items used in similar contexts land near each other.

    Why not just use the words themselves?


    Keyword / one-hot representation:
    "cat" and "kitten" share NO columns — to the machine they are exactly as unrelated as "cat" and "tractor".

    Embedding representation:
    "cat" and "kitten" are NEARBY points; "cat" and "tractor" are distant.
    Meaning becomes a measurable distance.

    What can be embedded


    Text words, sentences, paragraphs, documents, code
    Images photos, product pictures (image models; also multimodal models that embed
    images and text into the SAME space, enabling text-to-image search)
    Audio speech, music
    Structured products, users, items (recommendation embeddings — see this series' ML.NET guide)

    This guide focuses on text embeddings, the most common case, but every technique here (similarity metrics, indexes, vector databases) works identically for any embedding.

    The dimensionality of an embedding


    Dimensions = how many numbers are in the vector (a property of the MODEL, e.g. 384, 768, 1536, 3072).
    More dimensions can capture finer distinctions, but cost more storage, memory, and search time.
    Every vector in one index must have the SAME number of dimensions, from the SAME model.

    2. Text Embeddings

    Producing embeddings: a model call


    A text embedding model takes a string and returns its vector. It is a different kind of model from a chat model: it doesn't generate text, it just encodes it — and it's typically far cheaper and faster per token.

    using OpenAI.Embeddings;

    EmbeddingClient client = new("text-embedding-3-small", apiKey);

    // One text
    OpenAIEmbedding embedding = client.GenerateEmbedding("How do I reset my password?");
    ReadOnlyMemory<float> vector = embedding.ToFloats(); // e.g. 1,536 floats

    // Many texts in one request (far more efficient for ingestion)
    var texts = new List<string> { "First passage...", "Second passage...", "Third passage..." };
    OpenAIEmbeddingCollection results = (await client.GenerateEmbeddingsAsync(texts)).Value;
    foreach (OpenAIEmbedding e in results)
    Store(e.Index, e.ToFloats());

    On Azure OpenAI, only the client construction changes (use the deployment name of your embedding model):

    EmbeddingClient azureEmbeddings = azureOpenAiClient.GetEmbeddingClient("my-embedding-deployment");

    Shortening dimensions


    var options = new EmbeddingGenerationOptions { Dimensions = 512 };
    OpenAIEmbedding smaller = client.GenerateEmbedding(text, options);

    Some modern embedding models can return shortened vectors with only modest quality loss — a useful lever for reducing storage and speeding up search, and sometimes necessary to fit a database's index limits (Section 8). Check whether your model supports it.

    Where embedding models come from


    Hosted APIs OpenAI, Azure OpenAI, Cohere, Google, and others — simplest to operate,
    billed per token.
    Open-source Sentence-transformer style models you can run yourself (including via ONNX
    in .NET) — control and privacy, no per-token fee, but you operate the
    infrastructure.

    Rules of embedding hygiene


    1. USE THE SAME MODEL for documents and queries. Vectors from different models live in
    different spaces and are NOT comparable — not even if the dimensions happen to match.

    2. RECORD THE MODEL NAME/VERSION alongside stored vectors. Switching models later means
    RE-EMBEDDING EVERYTHING. Store the model identifier so you can tell which vectors are stale.

    3. CHUNK LONG DOCUMENTS. Models have input-length limits, and one vector for a 50-page
    document blurs everything into mush. Split into passages (commonly a few hundred tokens),
    often with slight overlap so ideas aren't cut in half, and embed each chunk separately.
    Keep a reference from each chunk back to its source and position.

    4. ADD CONTEXT TO CHUNKS where useful (document title, section heading) so a chunk that says
    "it must be renewed annually" still carries what "it" refers to.

    5. BATCH your embedding calls during ingestion, and respect rate limits (see this series'
    AI APIs with .NET guide).

    6. NORMALIZATION: many embedding models return vectors already scaled to length 1 (unit
    vectors). For unit vectors, cosine similarity and dot product give identical rankings
    (Section 4). Check your model's documentation.

    Embeddings are data — treat them as sensitive


    An embedding is derived from your text, and research has shown that some original content can be
    partly reconstructed from embeddings. Apply the same access control, encryption, and retention
    policy to vectors as to the source documents. Also remember that sending text to a hosted
    embedding API sends that text to the provider.

    3. Semantic Similarity

    Closeness in the vector space ≈ closeness in meaning


    Semantic similarity is the idea that two pieces of text are similar if they mean similar things, regardless of the exact words used.

    Query: "How can I get my money back?"

    Keyword search finds: documents containing "money" and "back"
    Semantic search also finds: "Refund policy" (no shared words)
    "Returning a purchase" (no shared words)
    "Cancel and reimbursement" (no shared words)

    This is why vector search transformed search, recommendations, deduplication, and RAG: users phrase things in endless ways, and meaning-based matching handles synonyms, paraphrase, and even (with the right model) other languages.

    Where semantic similarity shines


    - Question answering over documentation (the retrieval step of RAG)
    - Searching by concept: "tools for tracking my spending"
    - Recommending similar articles, products, or support tickets
    - Detecting near-duplicates and clustering related content
    - Cross-lingual search with multilingual embedding models
    - Matching a user's request to the right tool, FAQ, or intent

    Where it is weak — know the failure modes


    EXACT TOKENS Product codes, error numbers, names, and IDs ("ERR-40412", "SKU 88-ZK")
    are weak signals to an embedding model; keyword search nails them.
    (This is the main reason for hybrid search, Section 11.)

    NEGATION AND "Cancel my subscription" and "Don't cancel my subscription" can embed
    DETAIL very close together; embeddings capture topic more reliably than
    precise logical meaning.

    NUMBERS AND "Revenue of $5M" vs. "Revenue of $50M" may look nearly identical.
    DATES

    DOMAIN SHIFT A general model may represent specialized jargon (legal, medical,
    internal acronyms) poorly.

    "SIMILAR" ISN'T The nearest chunk may be topically related but not actually contain the answer.
    "RELEVANT" Similarity is a retrieval heuristic, not a guarantee.

    Evaluate retrieval on your data with real queries rather than assuming it works (Section 13).

    4. Cosine Similarity

    The standard way to measure how alike two vectors are


    Cosine similarity measures the angle between two vectors, ignoring their length. Vectors pointing in the same direction score 1; unrelated (perpendicular) vectors score about 0; opposite directions score -1.

    A · B sum of (A[i] * B[i])
    cos(A, B) = ─────────────── = ──────────────────────────────────────
    ||A|| × ||B|| sqrt(sum A[i]²) × sqrt(sum B[i]²)

    A worked example in two dimensions


    A = [1, 0] B = [1, 1]

    A · B = (1×1) + (0×1) = 1
    ||A|| = sqrt(1² + 0²) = 1
    ||B|| = sqrt(1² + 1²) = 1.414
    cos = 1 / (1 × 1.414) = 0.707 (a 45° angle)

    A = [1, 2, 3] B = [2, 4, 6] (same direction, B is just twice as long)
    cos = 1.0 (length is ignored — only direction matters)

    Why angle rather than distance?


    For text embeddings, DIRECTION carries the meaning; length is mostly an artifact.
    Cosine similarity compares meaning without being thrown off by magnitude — for example,
    a long document and a short summary of it can point the same way even though their
    raw vectors differ in size.

    In .NET


    using System.Numerics.Tensors;

    float similarity = TensorPrimitives.CosineSimilarity(a.Span, b.Span); // hardware-accelerated

    Or by hand, which is worth seeing once:

    static float CosineSimilarity(ReadOnlySpan<float> a, ReadOnlySpan<float> b)
    {
    float dot = 0, normA = 0, normB = 0;
    for (int i = 0; i < a.Length; i++)
    {
    dot += a[i] * b[i];
    normA += a[i] * a[i];
    normB += b[i] * b[i];
    }
    return dot / (MathF.Sqrt(normA) * MathF.Sqrt(normB));
    }

    The three common metrics — and the naming trap


    COSINE SIMILARITY angle between vectors. Range -1..1, HIGHER = more similar.
    DOT PRODUCT sum of A[i]*B[i]. For UNIT-LENGTH vectors it equals cosine similarity
    and ranks identically — and it's slightly cheaper to compute.
    EUCLIDEAN (L2) straight-line distance between points. LOWER = more similar.
    For unit vectors, L2 distance and cosine similarity also give the same ranking.

    THE NAMING TRAP: databases often expose DISTANCES (smaller is better), not similarities.
    cosine DISTANCE = 1 - cosine similarity (0 = identical, larger = less similar)
    pgvector operators: <=> cosine distance, <-> L2 distance, <#> NEGATIVE inner product
    Mixing up "higher is better" with "lower is better" produces results that are exactly backwards.

    Choose the metric your embedding model was trained for — for most text embedding models that's cosine similarity (or the equivalent dot product on normalized vectors). Create the index with the same metric you query with.

    5. Similarity Search

    The task: given a query vector, find the k most similar stored vectors


    This is k-nearest-neighbor (kNN) search, usually phrased "top-k."

    Exact search: compare against everything


    // Brute-force kNN: score every stored vector, keep the best k
    var topK = documents
    .Select(d => (d.Id, Score: TensorPrimitives.CosineSimilarity(query.Span, d.Vector.Span)))
    .OrderByDescending(x => x.Score)
    .Take(5)
    .ToList();

    EXACT (brute-force) search
    + Perfect recall — always the true nearest neighbors
    + No index to build or tune
    - Cost grows linearly with the number of vectors: every query touches every vector
    OK for thousands to low hundreds of thousands of vectors, depending on dimensions and hardware.

    Approximate search (ANN): trade a little accuracy for a lot of speed


    At millions of vectors, scanning everything per query is too slow. Approximate nearest neighbor (ANN) indexes organize vectors so a query examines only a small, promising fraction — returning almost always the true nearest neighbors, in a fraction of the time.

    HNSW (Hierarchical Navigable Small World)
    A layered graph of vectors; search hops from a coarse layer down to fine ones, greedily
    moving toward the query. Excellent speed/recall; the default in most systems.
    Costs: memory-hungry, slower to build, and updates are more expensive than a simple scan.
    Knobs: m (connections per node), ef_construction (build quality),
    ef_search (how wide the query explores — higher = better recall, slower).

    IVF (Inverted File)
    Cluster the vectors; at query time search only the few clusters nearest the query.
    Cheaper to build and smaller than HNSW; recall depends on how many clusters you probe.
    Knobs: number of lists/clusters, number to probe.

    Quantization / compression
    Store vectors with fewer bits (e.g. 8-bit or binary) to cut memory dramatically,
    at some cost to precision; often combined with re-scoring the top candidates on the
    full-precision vectors.

    The tuning triangle


    RECALL (did we find the true nearest neighbors?)
    / \
    / \
    SPEED ── MEMORY/COST

    You can't maximize all three. Higher recall means exploring more (slower) or storing
    more (bigger). Tune the knobs against YOUR data using a recall measurement — compare
    ANN results to exact results on a sample of queries.

    Search is more than "top-k"


    FILTERING "Nearest vectors WHERE tenant = 'acme' AND category = 'docs'."
    Essential for multi-tenant apps and access control. Filtering and ANN interact
    subtly: apply the filter BEFORE or DURING the vector search (pre-filtering) rather
    than after, or you may get fewer than k results (Section 14).

    SCORE THRESHOLD Drop results below a minimum similarity so the system can say "no good match"
    instead of returning the least-bad one. Tune the threshold on real queries —
    scales differ between models and metrics.

    TOP-K SIZING Retrieve more candidates than you'll finally use (say 20-50), then rerank or
    filter down to the best few.

    RERANKING A second-stage model (a cross-encoder or a semantic ranker) rescores the top
    candidates by reading the query and each passage TOGETHER — slower but more
    accurate than vector distance alone.

    6. Vector Databases

    What a vector database does


    A vector database (or any database with vector capabilities) stores embeddings alongside their metadata and answers "find the nearest vectors" queries efficiently using ANN indexes, with filtering, updates, and persistence.

    Core capabilities:
    - Store vectors + payload (the text chunk, source, tenant, tags, timestamps)
    - ANN index (HNSW / IVF / ...) for fast nearest-neighbor queries
    - Metadata filtering combined with vector search
    - Insert / update / delete without rebuilding everything
    - Scale, replication, backup, and access control (varies widely by product)
    - Often: hybrid search, reranking, and integrated embedding generation

    Two families


    PURPOSE-BUILT VECTOR DATABASES (e.g. Pinecone, Qdrant, Weaviate, Milvus, Chroma)
    Designed around vectors from the start; rich vector-specific features and tuning.
    Cost: another system to deploy, secure, operate, back up, and keep in sync with your primary data.

    VECTOR CAPABILITIES IN A DATABASE YOU ALREADY RUN
    Azure AI Search, PostgreSQL (pgvector), Redis, MongoDB Atlas, SQL Server / Azure SQL,
    Azure Cosmos DB, Elasticsearch/OpenSearch, and others.
    Vectors live next to your existing data, share its transactions/security/backups,
    and add no new infrastructure — and usually scale well past what most applications need.

    Which to pick (the honest guidance)


    Start with what you already operate. If your data is in PostgreSQL, try pgvector first.
    If you already run Azure AI Search for text search, add vectors there. A dedicated vector
    database earns its place when you have very large scale (hundreds of millions of vectors or
    more), demanding latency/throughput targets, or need specialized vector features your
    existing database lacks. Don't add infrastructure to solve a problem you don't have yet.

    The next four sections cover the options most relevant to a .NET team — each with the same sequence: define the index → store vectors → query.

    7. Azure AI Search

    A managed search service with first-class vector and hybrid search


    Azure AI Search (formerly Azure Cognitive Search) is Microsoft's managed search service. It combines full-text search (BM25), vector search, filtering, and optional semantic reranking in one service — which makes it a strong fit for hybrid retrieval (Section 11) and for .NET teams already on Azure.

    Define an index with a vector field


    using Azure;
    using Azure.Search.Documents;
    using Azure.Search.Documents.Indexes;
    using Azure.Search.Documents.Indexes.Models;
    using Azure.Search.Documents.Models;

    var indexClient = new SearchIndexClient(new Uri(endpoint), new AzureKeyCredential(adminKey));

    var index = new SearchIndex("docs-index")
    {
    Fields =
    {
    new SimpleField("id", SearchFieldDataType.String) { IsKey = true },
    new SearchableField("content") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft },
    new SimpleField("category", SearchFieldDataType.String) { IsFilterable = true },
    new VectorSearchField("contentVector", vectorSearchDimensions: 1536, vectorSearchProfileName: "vector-profile"),
    },
    VectorSearch = new VectorSearch
    {
    Profiles = { new VectorSearchProfile("vector-profile", "hnsw-config") },
    Algorithms =
    {
    new HnswAlgorithmConfiguration("hnsw-config")
    {
    Parameters = new HnswParameters { Metric = VectorSearchAlgorithmMetric.Cosine }
    }
    }
    }
    };

    await indexClient.CreateOrUpdateIndexAsync(index);

    The dimension count (1536) must match your embedding model's output exactly. The profile ties the field to an algorithm configuration (HNSW here, with the cosine metric).

    Upload documents with their vectors


    public class DocItem
    {
    public string Id { get; set; } = "";
    public string Content { get; set; } = "";
    public string Category { get; set; } = "";
    public ReadOnlyMemory<float> ContentVector { get; set; }
    }

    var searchClient = new SearchClient(new Uri(endpoint), "docs-index", new AzureKeyCredential(queryOrAdminKey));

    var batch = chunks.Select((chunk, i) => new DocItem
    {
    Id = i.ToString(),
    Content = chunk.Text,
    Category = chunk.Category,
    ContentVector = embeddings[i],
    }).ToList();

    await searchClient.UploadDocumentsAsync(batch);

    Query: pure vector search


    var vectorQuery = new VectorizedQuery(queryEmbedding) // ReadOnlyMemory<float> from your embedding call
    {
    KNearestNeighborsCount = 5,
    Fields = { "contentVector" }
    };

    var options = new SearchOptions
    {
    VectorSearch = new() { Queries = { vectorQuery } },
    Filter = "category eq 'docs'", // OData filter, combined with vector search
    Size = 5,
    Select = { "id", "content", "category" }
    };

    SearchResults<DocItem> results = await searchClient.SearchAsync<DocItem>(null, options); // null text = vector only

    await foreach (SearchResult<DocItem> r in results.GetResultsAsync())
    Console.WriteLine($"{r.Score:F3} {r.Document.Content}");

    Query: hybrid search — add the text query


    SearchResults<DocItem> hybrid = await searchClient.SearchAsync<DocItem>(
    "how do I reset my password", // keyword (BM25) leg
    options); // vector leg (the same options)

    Passing both a text query and a vector query makes Azure AI Search run the two retrievals in parallel and merge them with Reciprocal Rank Fusion (Section 11) into one ranked list.

    Useful features beyond the basics


    SEMANTIC RANKER An optional reranking stage that rescored the top results with a language
    model for better relevance. Hybrid retrieval + semantic ranking is
    Microsoft's commonly recommended configuration for RAG.
    INTEGRATED Indexers and skillsets can chunk documents and generate embeddings at
    VECTORIZATION indexing time, and vectorize query text at query time, so you don't hand-roll
    the pipeline.
    FILTERS OData filter expressions work alongside vector queries; for vector queries
    the default is to filter BEFORE the vector search.
    SCALE UNITS Replicas and partitions scale throughput and storage; vector capacity and
    limits depend on the service tier — check current limits before sizing.

    Trade-offs


    + Managed (no servers to run), hybrid + semantic ranking built in, rich filtering,
    good .NET SDK, strong Azure security integration (Entra ID, private endpoints).
    - Billed by service tier/units rather than per query, so cost is a baseline even when idle;
    data lives in a separate search index that you must keep in sync with your system of record.

    8. PostgreSQL + pgvector

    Vector search inside the database you probably already have


    pgvector is an open-source PostgreSQL extension adding a vector data type, distance operators, and ANN indexes. Because vectors live in ordinary tables, you get SQL joins, transactions, filters, and your existing backup and security model. It's available on most managed PostgreSQL services (check your provider's supported version).

    Schema and data


    CREATE EXTENSION IF NOT EXISTS vector;

    CREATE TABLE documents (
    id BIGSERIAL PRIMARY KEY,
    content TEXT NOT NULL,
    category TEXT NOT NULL,
    tenant_id INT NOT NULL,
    embedding VECTOR(1536) NOT NULL -- dimension must match your embedding model
    );

    INSERT INTO documents (content, category, tenant_id, embedding)
    VALUES ('Steps for recovering account access', 'docs', 1, '[0.012, -0.034, 0.101, ...]');

    Query: nearest neighbors with an operator


    -- $1 is the query embedding. <=> is COSINE DISTANCE (smaller = more similar).
    SELECT id, content, 1 - (embedding <=> $1) AS similarity
    FROM documents
    WHERE tenant_id = 1 AND category = 'docs'
    ORDER BY embedding <=> $1
    LIMIT 5;

    Operators: <=> cosine distance <-> L2 (Euclidean) distance <#> NEGATIVE inner product
    Convert distance to similarity for display: similarity = 1 - cosine_distance
    The query must ORDER BY the distance operator with a LIMIT to be able to use a vector index.

    Indexing: from exact scan to ANN


    -- With no index, every query is an EXACT scan: perfect recall, slow at scale.

    -- HNSW: best query speed/recall; slower to build, more memory
    CREATE INDEX documents_embedding_hnsw
    ON documents USING hnsw (embedding vector_cosine_ops)
    WITH (m = 16, ef_construction = 64);

    -- IVFFlat: faster to build, smaller; build AFTER loading representative data
    CREATE INDEX documents_embedding_ivf
    ON documents USING ivfflat (embedding vector_cosine_ops)
    WITH (lists = 100);

    -- Query-time recall/speed trade-off
    SET hnsw.ef_search = 100; -- HNSW: wider exploration, better recall, slower
    SET ivfflat.probes = 10; -- IVFFlat: probe more clusters, better recall, slower

    The operator class in the index (vector_cosine_ops) must MATCH the operator in your query (<=>).
    vector_cosine_ops -> <=> vector_l2_ops -> <-> vector_ip_ops -> <#>
    A mismatch silently falls back to a full scan.

    DIMENSION LIMIT: the plain vector type can be indexed only up to a certain number of dimensions
    (2,000 in recent pgvector versions). A 3,072-dimension embedding can't be indexed as-is — shorten
    the embedding (Section 2), or use a smaller-precision type such as halfvec, whose indexable
    limit is higher. Check the current pgvector documentation.

    Filtered search: the pgvector gotcha


    With an ANN index, the index returns its nearest candidates FIRST and the WHERE filter is
    applied AFTERWARD. If the filter is selective (one small tenant among many), most candidates are
    filtered out and you may get FEWER than k rows — or none — even though matching rows exist.

    Remedies:
    - Raise hnsw.ef_search so the index returns more candidates before filtering.
    - Newer pgvector versions offer iterative index scans that keep scanning until enough rows
    pass the filter — check the version you run.
    - Use PARTIAL indexes (CREATE INDEX ... WHERE tenant_id = 1) or PARTITION by tenant for
    highly selective, high-value filters.
    - Ordinary B-tree indexes on the filter columns still help when the filter is very selective.

    From .NET: Npgsql + the Pgvector package


    // dotnet add package Npgsql
    // dotnet add package Pgvector
    using Npgsql;
    using Pgvector;

    var dataSourceBuilder = new NpgsqlDataSourceBuilder(connectionString);
    dataSourceBuilder.UseVector(); // registers the vector type
    await using var dataSource = dataSourceBuilder.Build();
    await using var conn = await dataSource.OpenConnectionAsync();

    float[] queryVector = queryEmbedding.ToArray();

    await using var cmd = new NpgsqlCommand(
    "SELECT id, content, 1 - (embedding <=> $1) AS similarity " +
    "FROM documents WHERE tenant_id = $2 ORDER BY embedding <=> $1 LIMIT 5", conn);
    cmd.Parameters.AddWithValue(new Vector(queryVector));
    cmd.Parameters.AddWithValue(tenantId);

    await using var reader = await cmd.ExecuteReaderAsync();
    while (await reader.ReadAsync())
    Console.WriteLine($"{reader.GetDouble(2):F3} {reader.GetString(1)}");

    Always parameterize — never build SQL by concatenating text (see this series' SQL guides). The query vector is passed as a typed parameter.

    From EF Core


    // dotnet add package Pgvector.EntityFrameworkCore
    using Pgvector;
    using Pgvector.EntityFrameworkCore;

    public class Document
    {
    public long Id { get; set; }
    public string Content { get; set; } = "";
    public int TenantId { get; set; }

    [Column(TypeName = "vector(1536)")]
    public Vector Embedding { get; set; } = null!;
    }

    // DbContext configuration
    optionsBuilder.UseNpgsql(connectionString, o => o.UseVector());
    // modelBuilder.HasPostgresExtension("vector");

    var nearest = await context.Documents
    .Where(d => d.TenantId == tenantId)
    .OrderBy(d => d.Embedding.CosineDistance(new Vector(queryVector)))
    .Take(5)
    .ToListAsync();

    This is the same EF Core translation model this series' EF Core guide describes — the CosineDistance call becomes the <=> operator in SQL.

    Trade-offs


    + No new infrastructure; vectors next to relational data; full SQL (joins, filters, transactions);
    one backup, one security model; great for tens of thousands to a few million vectors, and often more.
    - ANN-with-filter quirks (above); index builds and memory use grow with data; at very large scale
    or extreme throughput, a dedicated engine may do better; hybrid search is DIY (Section 11).

    9. Redis Vector Search

    Very low-latency vector search, in memory


    Redis's query engine (available in Redis Stack, Redis Enterprise/Cloud, and Azure's Redis offerings that include the search module — verify support for your tier) can index vectors stored in hashes or JSON documents and run kNN queries combined with filters. Because data lives in memory, latency is excellent — and so is the cost per gigabyte.

    Create an index


    FT.CREATE idx:docs ON HASH PREFIX 1 doc:
    SCHEMA
    content TEXT
    category TAG
    embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1536 DISTANCE_METRIC COSINE

    Any hash whose key starts with doc: is indexed automatically. The vector field declares the algorithm (HNSW, or FLAT for exact search), the element type, the dimension count, and the metric.

    Store and query from .NET (StackExchange.Redis + NRedisStack)


    // dotnet add package NRedisStack
    using NRedisStack;
    using NRedisStack.RedisStackCommands;
    using NRedisStack.Search;
    using NRedisStack.Search.Literals.Enums;
    using StackExchange.Redis;
    using System.Runtime.InteropServices;

    var redis = await ConnectionMultiplexer.ConnectAsync(connectionString);
    var db = redis.GetDatabase();

    // 1. Create the index
    var schema = new Schema()
    .AddTextField("content")
    .AddTagField("category")
    .AddVectorField("embedding", Schema.VectorField.VectorAlgo.HNSW,
    new Dictionary<string, object>
    {
    ["TYPE"] = "FLOAT32",
    ["DIM"] = 1536,
    ["DISTANCE_METRIC"] = "COSINE"
    });

    await db.FT().CreateAsync("idx:docs",
    new FTCreateParams().On(IndexDataType.HASH).Prefix("doc:"), schema);

    // 2. Store a document — the vector is stored as RAW float32 BYTES
    byte[] ToBytes(ReadOnlyMemory<float> v) => MemoryMarshal.AsBytes(v.Span).ToArray();

    await db.HashSetAsync("doc:1", new HashEntry
    []{
    new("content", "Steps for recovering account access"),
    new("category", "docs"),
    new("embedding", ToBytes(docEmbedding)),
    });

    // 3. Query: pre-filter by tag, then 5 nearest neighbors
    var query = new Query("(@category:{docs})=>[KNN 5 @embedding $vec AS score]")
    .AddParam("vec", ToBytes(queryEmbedding))
    .SetSortBy("score")
    .ReturnFields("content", "score")
    .Dialect(2);

    SearchResult result = await db.FT().SearchAsync("idx:docs", query);
    foreach (var doc in result.Documents)
    Console.WriteLine($"{doc["score"]} {doc["content"]}");

    Details that matter:
    - The returned "score" is a DISTANCE (for cosine: smaller = more similar), not a similarity.
    - Vectors must be passed as binary float32 blobs, in the same byte layout used at write time.
    - The filter in parentheses is applied as a PRE-filter to the KNN search.
    - Use DIALECT 2 (or later) for vector queries.

    Redis's sweet spots


    SEMANTIC CACHING Embed incoming prompts; if a near-identical question was answered recently,
    return the cached LLM response instead of calling the model — cutting cost
    and latency (see this series' AI APIs with .NET guide on cost optimization).
    SESSION / CHAT Fast retrieval of conversation memory and recent context
    MEMORY (see this series' LLM Application Development guide).
    REAL-TIME Recommendations and lookups where millisecond latency matters, on a
    dataset that fits in memory.

    Trade-offs


    + Excellent latency; already present in many stacks; flexible data structures;
    hybrid-style queries mixing TEXT/TAG/NUMERIC filters with KNN.
    - Memory is expensive: large vector sets cost much more than on disk-based systems
    (quantization helps); durability depends on persistence settings you must configure
    deliberately; not a general system of record for your documents.

    10. MongoDB Vector Search

    Vector search alongside your documents (Atlas Vector Search)


    MongoDB Atlas supports vector search through a dedicated vector search index and the $vectorSearch aggregation stage. Embeddings are stored as plain arrays inside your documents — right next to the rest of the record — which suits applications already modeled as documents. (Vector search availability for self-managed MongoDB deployments has been evolving; check current documentation for your deployment type.)

    Define the index


    {
    "fields": [
    { "type": "vector", "path": "embedding", "numDimensions": 1536, "similarity": "cosine" },
    { "type": "filter", "path": "category" },
    { "type": "filter", "path": "tenantId" }
    ]
    }

    Create it in the Atlas UI, the CLI/API, or via the driver. Note that any field you want to filter on during vector search must be declared as a filter field in the index.

    Query with $vectorSearch


    db.documents.aggregate([
    {
    $vectorSearch: {
    index: "vector_index",
    path: "embedding",
    queryVector: [0.012, -0.034, 0.101 /* ... */],
    numCandidates: 150, // how many candidates the ANN search considers
    limit: 5, // how many results to return
    filter: { category: "docs", tenantId: 1 }
    }
    },
    { $project: { content: 1, category: 1, score: { $meta: "vectorSearchScore" } } }
    ])

    From .NET (MongoDB.Driver)


    // dotnet add package MongoDB.Driver
    using MongoDB.Bson;
    using MongoDB.Driver;

    var collection = database.GetCollection<BsonDocument>("documents");

    var pipeline = new
    []{
    new BsonDocument("$vectorSearch", new BsonDocument
    {
    { "index", "vector_index" },
    { "path", "embedding" },
    { "queryVector", new BsonArray(queryEmbedding.ToArray().Select(f => (double)f)) },
    { "numCandidates", 150 },
    { "limit", 5 },
    { "filter", new BsonDocument { { "category", "docs" }, { "tenantId", 1 } } }
    }),
    new BsonDocument("$project", new BsonDocument
    {
    { "content", 1 },
    { "score", new BsonDocument("$meta", "vectorSearchScore") }
    })
    };

    List<BsonDocument> results = await collection.Aggregate<BsonDocument>(pipeline).ToListAsync();

    Recent versions of the driver also offer a strongly typed VectorSearch helper on the aggregation builder — check the driver version you use. The raw pipeline above works regardless.

    Details that matter


    numCandidates vs. limit
    numCandidates is how many nearest candidates the approximate search examines; limit is how many
    you get back. A larger numCandidates (commonly 10-20x the limit) improves recall at the cost of
    latency. Tune it like ef_search in HNSW.

    SCORE
    vectorSearchScore is a SIMILARITY normalized so higher = better — unlike pgvector's and Redis's
    distances. Check each system's convention.

    FILTERS
    Filter fields must be indexed as type "filter". Filters are applied during the search rather
    than after, so selective filters generally still return a full result set.

    KEEPING VECTORS IN SYNC
    Update the embedding whenever the source text changes — a stale vector silently returns
    results for the OLD text. Atlas can also vectorize automatically in some configurations;
    check what your tier offers.

    Trade-offs


    + Vectors live inside the document with its data; flexible schema; scales horizontally;
    hybrid options via Atlas Search; natural fit if you already run MongoDB.
    - Atlas-centric (check deployment support); index definitions and filter fields are managed
    separately from the collection; cost tied to dedicated search nodes at scale.

    11. Hybrid Search

    Combine meaning-matching and word-matching


    Vector search and keyword search have opposite strengths (Section 3):

    KEYWORD (BM25 / full-text) VECTOR (semantic)
    + exact terms, IDs, codes, names + synonyms, paraphrase, intent
    + explainable + cross-lingual
    - misses different wording - weak on rare tokens, exact strings, numbers

    Hybrid search runs both retrievals and fuses the results — typically outperforming either alone, especially on real-world queries that mix concepts and specifics ("error 40412 when resetting password").

    ┌──> keyword search (BM25) ──> ranked list A ──┐
    QUERY ───┤ ├──> FUSION ──> final ranking ──> (rerank) ──> top results
    └──> vector search (kNN) ──> ranked list B ──┘

    Reciprocal Rank Fusion (RRF): the standard way to merge


    Keyword scores (BM25) and vector scores (cosine) are on different scales and can't be added directly. RRF sidesteps this by using only rank positions:

    RRF score(doc) = SUM over each list of 1 / (k + rank_in_that_list) (k is commonly 60)

    Doc X: rank 1 in keyword list, rank 3 in vector list -> 1/(60+1) + 1/(60+3) = 0.0164 + 0.0159 = 0.0323
    Doc Y: rank 2 in keyword list, absent from vector list -> 1/(60+2) = 0.0161
    Doc X wins: it did well in BOTH lists.

    Documents that appear high in both lists rise to the top; a document strong in only one still gets credit. RRF needs no score calibration and is robust, which is why Azure AI Search and many other systems use it.

    static List<(string Id, double Score)> ReciprocalRankFusion(
    IEnumerable<IReadOnlyList<string>> rankedLists, int k = 60)
    {
    var scores = new Dictionary<string, double>();

    foreach (var list in rankedLists)
    for (int rank = 0; rank < list.Count; rank++)
    scores[list[rank]] = scores.GetValueOrDefault(list[rank]) + 1.0 / (k + rank + 1);

    return scores.OrderByDescending(kv => kv.Value)
    .Select(kv => (kv.Key, kv.Value))
    .ToList();
    }

    var fused = ReciprocalRankFusion(new[] { keywordIds, vectorIds }).Take(10).ToList();

    An alternative is weighted score fusion (normalize each list's scores, then take a weighted sum) when you want to favor one signal — but it requires careful normalization and tuning.

    Hybrid search on each platform


    AZURE AI SEARCH Built in: supply a text query AND a vector query in one request; results are
    merged with RRF automatically (Section 7). Add the semantic ranker for reranking.

    POSTGRESQL Combine pgvector with PostgreSQL's native full-text search (tsvector / tsquery),
    and fuse in SQL (below) or in application code.

    REDIS Use TEXT / TAG / NUMERIC filters as pre-filters on a KNN query, or run a text
    query and a KNN query and fuse in application code. (Check whether your
    Redis version offers a built-in hybrid/fusion command.)

    MONGODB ATLAS Run an Atlas Search (full-text) query and a $vectorSearch and fuse them — newer
    Atlas versions offer built-in rank-fusion stages; otherwise fuse in the
    application.

    Hybrid search in PostgreSQL: a complete RRF query


    -- One-time: a generated tsvector column and a GIN index for fast full-text search
    ALTER TABLE documents
    ADD COLUMN content_tsv tsvector
    GENERATED ALWAYS AS (to_tsvector('english', content)) STORED;
    CREATE INDEX documents_content_tsv_idx ON documents USING gin (content_tsv);

    -- $1 = query embedding (vector), $2 = query text
    WITH semantic AS (
    SELECT id, ROW_NUMBER() OVER (ORDER BY embedding <=> $1) AS rank
    FROM documents
    ORDER BY embedding <=> $1
    LIMIT 20
    ),
    keyword AS (
    SELECT id, ROW_NUMBER() OVER (ORDER BY ts_rank_cd(content_tsv, plainto_tsquery('english', $2)) DESC) AS rank
    FROM documents
    WHERE content_tsv @@ plainto_tsquery('english', $2)
    ORDER BY ts_rank_cd(content_tsv, plainto_tsquery('english', $2)) DESC
    LIMIT 20
    )
    SELECT COALESCE(s.id, k.id) AS id,
    COALESCE(1.0 / (60 + s.rank), 0) + COALESCE(1.0 / (60 + k.rank), 0) AS rrf_score
    FROM semantic s
    FULL OUTER JOIN keyword k ON s.id = k.id
    ORDER BY rrf_score DESC
    LIMIT 10;

    Add a reranker for the final polish


    Pipeline used by many production RAG systems:

    1. Hybrid retrieval of a broad candidate set (top 20-50) <- cheap, high recall
    2. RERANK with a cross-encoder or semantic ranker <- slower, high precision
    3. Keep the top 3-8 passages for the LLM prompt <- small, focused context

    A reranker reads the query and each passage together, so it judges relevance far better than
    vector distance alone — and running it only on a short candidate list keeps it affordable.

    12. Choosing a Vector Store

    A side-by-side view

    Azure AI SearchPostgreSQL + pgvectorRedisMongoDB AtlasBest atManaged hybrid + semantic rankingVectors next to relational dataLowest latency, cachingVectors inside documentsHybrid searchBuilt in (RRF)DIY (FTS + RRF)Filters + DIY fusionAtlas Search + fusionFilteringOData, pre-filter by defaultSQL WHERE (ANN-filter caveat)TAG/NUMERIC pre-filterfilter fields in indexOperationsManaged serviceYour DB (or managed Postgres)Managed or self-runManaged (Atlas)Cost shapePer service tier/unitPart of your DB costMemory-drivenDedicated search nodesWatch out forBaseline cost; sync with sourceFiltered ANN recall; index memoryMemory cost; persistence configAtlas-centric; filter field setup

    A decision guide


    Already on PostgreSQL, moderate scale, want transactions and SQL joins -> pgvector
    Azure shop that needs strong hybrid search and ranking with little code -> Azure AI Search
    Need single-digit-millisecond lookups, semantic cache, or session memory -> Redis
    Data already modeled as documents in MongoDB Atlas -> MongoDB vector search
    Hundreds of millions of vectors or specialized vector features -> a dedicated vector database

    Whatever you choose, keep the system of record separate in your head


    The vector store is an INDEX over your content, not the content's home. Keep the authoritative
    data in your primary database or storage, keep the vector index rebuildable from it, and plan
    how updates, deletes, and re-embedding flow from the source to the index. An index you can't
    rebuild is a liability.

    13. Putting It Together: An Ingestion and Query Pipeline

    Two flows share one embedding model and one index


    INGESTION (offline / on content change)
    source documents
    -> clean + split into chunks (a few hundred tokens, light overlap, keep title/section as context)
    -> embed each chunk (batched, rate-limited)
    -> upsert into the vector store: id, chunk text, vector, metadata
    (source, position, tenant/ACL, embedding-model name, timestamp)

    QUERY (online, per request)
    user question
    -> embed the question (SAME model)
    -> hybrid retrieval (vector + keyword) with filters (tenant, permissions) -> top 20-50 candidates
    -> rerank -> top 3-8 passages
    -> build the LLM prompt: instructions + passages + question
    -> generate answer with citations
    -> validate that cited passages really exist in the retrieved set

    The skeleton in C


    public async Task IngestAsync(IEnumerable<SourceDoc> docs, CancellationToken ct)
    {
    foreach (var doc in docs)
    {
    var chunks = chunker.Split(doc.Text, maxTokens: 400, overlapTokens: 50)
    .Select(c => $"{doc.Title}\n\n{c}") // carry context into each chunk
    .ToList();

    var embeddings = (await embeddingClient.GenerateEmbeddingsAsync(chunks, cancellationToken: ct)).Value;

    var records = chunks.Select((text, i) => new ChunkRecord(
    Id: $"{doc.Id}:{i}", DocId: doc.Id, Text: text,
    Vector: embeddings[i].ToFloats(),
    TenantId: doc.TenantId, Model: "text-embedding-3-small"));

    await store.UpsertAsync(records, ct); // delete old chunks of doc.Id first if the doc changed
    }
    }

    public async Task<List<ChunkRecord>> RetrieveAsync(string question, int tenantId, CancellationToken ct)
    {
    var queryVector = (await embeddingClient.GenerateEmbeddingAsync(question, cancellationToken: ct)).Value.ToFloats();

    var candidates = await store.HybridSearchAsync(question, queryVector, tenantId, top: 30, ct); // filter by tenant inside the query
    return await reranker.RerankAsync(question, candidates, keep: 5, ct);
    }

    Evaluate retrieval separately from generation


    If the answer is wrong, find out WHICH half failed: retrieval (the right passage wasn't found)
    or generation (it was found but misused). Measure retrieval directly:

    1. Build a test set: realistic questions, each paired with the passage(s) that answer it.
    2. For each question, run retrieval and record where the correct passage ranked.
    3. Report:
    Recall@k = fraction of questions whose correct passage appears in the top k
    MRR = average of 1 / (rank of the first correct passage)
    4. Change one thing at a time (chunk size, model, hybrid on/off, reranker) and re-measure.

    14. Common Pitfalls

    PitfallWhy it hurtsBetter approachEmbedding queries and documents with different modelsVectors from different models live in different spaces; similarity is meaninglessUse one model for both, and store the model name with every vector (Section 2)Changing embedding models without re-embeddingOld and new vectors are incomparable; results silently degradeVersion the model; re-embed the full corpus (or run old and new indexes side by side) when switching (Section 2)Embedding whole documents as one vectorMeaning blurs; input limits are hit; retrieval is impreciseChunk into focused passages with light overlap and keep source references (Section 2)Treating cosine distance as similarity (or vice versa)Ranking comes out exactly backwardsKnow each system's convention: pgvector and Redis return distances, MongoDB returns similarity (Sections 4, 8–10)Index metric differs from query metricIndex isn't used (full scan) or results are wrongCreate the index with the metric you query with, e.g. vector_cosine_ops with <=> (Section 8)Mismatched dimension countsInserts or queries fail, or the field can't be indexedMatch index dimensions to the model; shorten embeddings or use a lower-precision type if you exceed index limits (Sections 2, 8)Post-filtering ANN results (pgvector)A selective filter leaves fewer than k rows, or noneRaise ef_search, use iterative scans, partial indexes, or partitioning (Section 8)Forgetting tenant/permission filtersOne user's query can retrieve another user's documents — a data breachFilter by tenant/ACL inside the vector query, never after retrieval; test it explicitly (Sections 5, 13)Pure vector search for exact-match needsEmbeddings are weak on IDs, codes, and rare termsUse hybrid search with keyword retrieval (Section 11)Adding BM25 and cosine scores directlyThe scales are incomparableFuse by rank with RRF, or normalize carefully before weighting (Section 11)Returning the top-k regardless of qualityThe "least bad" result is presented as an answerApply a score threshold tuned on real queries, and let the system say "no match" (Section 5)Never measuring retrieval qualityYou can't tell whether tuning helped, or whether retrieval or generation is failingBuild a labeled question set; track Recall@k and MRR (Section 13)Stale vectors after source updatesSearch returns results for text that no longer existsRe-embed on change; delete old chunks when a document is updated or removed (Sections 10, 13)Over-tuning ANN for speed without measuring recallQuietly missing relevant resultsCompare ANN results to exact search on sample queries; tune ef_search/numCandidates/probes against recall (Section 5)Adopting a dedicated vector database too earlyAnother system to run, secure, and keep in syncStart with the database you already operate; migrate only when scale or features demand (Section 6)Ignoring that embeddings are derived from sensitive dataVectors can leak information about the source textApply the same access control, encryption, and retention as the source (Section 2)

    Quick Reference Table

    ConceptKey ideaPractical takeawayEmbeddingA vector of numbers representing meaningSimilar items → nearby pointsText embedding modelEncodes text into a fixed-length vectorSame model for documents and queries; record its versionDimensionsLength of the vector (e.g. 1536)Must match across model, index, and queriesChunkingSplit documents into focused passagesA few hundred tokens, light overlap, keep contextSemantic similarityCloseness in meaning, not wordingGreat for paraphrase; weak on exact tokens and numbersCosine similarityAngle between vectors (-1 to 1)Higher = more similar; ignores vector lengthCosine distance1 - cosine similarityLower = more similar; what many databases returnDot productsum(A[i]*B[i])Same ranking as cosine on unit-length vectorsExact kNNCompare against every vectorPerfect recall; fine for small collectionsANN (HNSW / IVF)Approximate nearest neighbors via an indexFast at scale; tune recall against speedPre-filteringApply filters during the vector searchNeeded for tenancy and permissionsRerankingSecond-stage relevance scoringRetrieve broad, rerank narrowVector databaseStores vectors with ANN indexes and filtersPrefer the database you already run until scale demands moreAzure AI SearchManaged vector + keyword + semantic rankingBuilt-in hybrid with RRFpgvectorVector type and indexes in PostgreSQL<=> operator + HNSW/IVFFlat; mind filtered-ANN recallRedis vector searchIn-memory KNN via FT.SEARCHLowest latency; ideal for semantic cachingMongoDB $vectorSearchANN search over document fieldsDeclare filter fields; tune numCandidatesHybrid searchKeyword + vector retrieval, fusedBeats either alone on mixed queriesRRFsum(1 / (k + rank)), k ≈ 60Merges ranked lists without score calibrationRecall@k / MRRRetrieval quality metricsMeasure retrieval separately from generation

    Conclusion


    Embeddings turn a fuzzy problem — "find content that means something similar" — into a precise one: find the nearest points in a vector space. Everything practical follows from a few ideas. Embeddings are only comparable when produced by the same model, so the model becomes part of your data's identity. Cosine similarity (or dot product on normalized vectors) is the standard yardstick, with the constant risk of confusing a distance with a similarity. Exact search is simple and perfect but linear, so at scale you accept approximate indexes like HNSW and tune recall against speed deliberately. And retrieval quality depends as much on the unglamorous parts — chunking, filtering, thresholds, and evaluation — as on the model.

    The platform choice matters less than it first appears, because the same patterns recur everywhere: define an index with the right dimensions and metric, store vectors beside their metadata, query with filters, and measure what comes back. Azure AI Search gives you managed hybrid retrieval and ranking; pgvector brings vectors into the relational database you already trust; Redis offers memory-speed lookups and semantic caching; MongoDB keeps embeddings inside your documents. Start with the one closest to your existing data, add keyword retrieval and fusion because real queries mix meaning with exact terms, put a reranker on top when precision matters, and always enforce tenant and permission filters inside the query. Build that foundation and measure it with Recall@k, and the retrieval layer of your RAG applications stops being a black box and becomes something you can improve on purpose.

    Found this useful? Feel free to star the repo, open an issue with corrections, or share the "the chatbot found a perfect paraphrase but missed the exact error code" story that made the case for hybrid search click better than any benchmark.#dotnet #ai #programming #learning #software #coding #development #engineering #inclusive #community
    Embeddings & Vector Search

  8. DATE: October 11, 2026 at 10:00AM
    SOURCE: PSYPOST.ORG

    ** Research quality varies widely from fantastic to small exploratory studies. Please check research methods when conclusions are very important to you. **
    -------------------------------------------------

    TITLE: Antidepressants in pregnancy not tied to extra autism or ADHD risk beyond maternal depression, study finds

    URL: psypost.org/antidepressants-in

    Children whose mothers had a recorded depression diagnosis around the time of pregnancy were slightly more likely to need special educational support in school, and those whose mothers were also prescribed antidepressants had a small additional increase in risk. However, the researchers could not rule out that this extra risk reflects more severe depression rather than the medication itself. The research was published in PLOS Medicine.

    Expectant mothers often face difficult decisions regarding mental health treatment, especially given concerns about how medications might affect fetal brain development. Fears about potential side effects lead some pregnant women to stop taking prescribed antidepressants, which can leave both mother and child vulnerable to the harms of untreated depression. In an educational setting, a special educational need refers to situations where a child requires additional support at school to help with learning, communication, physical, or behavioral challenges compared to their peers.

    Early observational studies fueled worries about medication safety during pregnancy. A 2016 study reported that taking antidepressants during pregnancy was associated with an increased risk of autism spectrum disorder in children. Follow-up research, however, suggested that the mother’s underlying depression and shared family traits might actually explain the connection.

    Studies that accounted for those factors often saw the link fade. For instance, a 2018 systematic review found that apparent risks of autism and attention-deficit hyperactivity disorder largely shrank or disappeared when researchers properly accounted for the mother’s mental health history. Similarly, a 2017 study using sibling comparisons showed that links to neurodevelopmental conditions, which affect how the brain develops, such as autism and ADHD, largely disappeared when comparing exposed children to their unexposed siblings, pointing to shared family factors rather than the drugs themselves.

    Recent research covered by PsyPost in 2025 also found that children exposed to antidepressants in the womb showed no increased risk of anxiety or depression once maternal depression was factored in, while another study covered by PsyPost in 2025 indicated that population-level risks are largely driven by shared genetic and family factors.

    To help address this ongoing debate, Saraid McIlvride and her colleagues at the University of Glasgow evaluated both depression and antidepressant use side by side in a large population. The authors sought to separate the potential side effects of the medications from the developmental effects of the illness itself.

    “Women want to have confidence in their decision to take medication during pregnancy and know that long-term studies investigating potential effects have been carried out,” study lead author Saraid McIlvride, a Daphne Jackson Research Fellow at the University of Glasgow, told PsyPost. “Many studies have focused on pregnancy and neonatal outcomes, but fewer studies have looked at longer-term outcomes, particularly for newer or less common antidepressants, and there have been conflicting results.”

    “This dataset, which linked child education and health records with their mother’s health records across the whole of Wales, allowed us to follow children up during primary school and gave a large enough sample size to look at some individual antidepressants and other educational outcomes beyond ASD and ADHD.”

    Because this was observational research, the scientists analyzed existing health and education databases rather than assigning treatments to participants. The dataset linked primary care, maternity, and school records for 167,447 children born in Wales between 2009 and 2016. By tracking the children through 2022, when they were just under 6 years old on average, the team could identify any special educational needs recorded by schools.

    Children were grouped by two separate measures: whether their mother had received at least one antidepressant prescription during pregnancy or in the month before conception, and whether she had a depression diagnosis recorded by her family doctor in the two years before giving birth. Overall, 7.6 percent of the children were born to mothers who had a recorded depression diagnosis but received no antidepressant prescriptions. Another 4.2 percent were exposed to both a maternal depression diagnosis and antidepressant prescriptions, while 3.6 percent were born to mothers prescribed antidepressants without a recorded depression diagnosis. The remaining children, who formed the comparison group, had neither exposure recorded.

    The researchers adjusted their models for factors such as child sex, age, ethnicity, maternal age, smoking habits, and the level of deprivation in the family’s neighborhood. The analysis indicated that both untreated maternal depression and antidepressant prescriptions were associated with higher odds of a child developing a special educational need. Among children with neither exposure, the baseline rate of requiring special educational support was 20 cases per 100 children. For children whose mothers had untreated depression, this rate rose to 23.6 cases per 100 children.

    Children whose mothers had both a depression diagnosis and antidepressant prescriptions had a predicted rate of 26.5 cases of special educational need per 100 children, while those whose mothers were prescribed antidepressants without a depression diagnosis had a rate of 26.3 per 100. When examining the additional risk linked to medication, the gap depended on whether the mother had a depression diagnosis. Prescriptions were associated with an extra 6.3 cases per 100 children among mothers without a recorded depression diagnosis, but only 2.9 additional cases per 100 children among mothers who had a recorded diagnosis.

    The authors note that the smaller gap reflects the already elevated rate among children whose mothers had untreated depression, meaning the higher risk linked to maternal depression cannot be attributed solely to medication. Compared with unexposed children, both maternal depression and antidepressant exposure were associated with higher odds of autism, ADHD, learning difficulties, and behavioral, emotional, and social difficulties.

    But when children of mothers with treated depression were compared with children of mothers with untreated depression, the differences for autism and ADHD were not statistically significant; only learning difficulties and behavioral, emotional, and social difficulties showed small differences, of about one additional case per 100 children each.

    The researchers also looked at different types of antidepressants. Selective serotonin reuptake inhibitors, the standard first-line antidepressants, which include drugs such as sertraline and fluoxetine, made up about 83 percent of prescriptions and followed the same general pattern as the overall results.

    Two less common classes, tricyclic antidepressants, an older type of medication, and serotonin and norepinephrine reuptake inhibitors, showed a larger gap between treated and untreated depression, with about 8.8 extra cases of special educational need per 100 children for each. Because relatively few children were exposed to these drugs, the estimates were imprecise, ranging from roughly 3 to 15 extra cases per 100.

    The tricyclic result is consistent with a 2026 meta-analysis, which found that tricyclic antidepressants were the only class where links to neurodevelopmental conditions persisted after accounting for maternal mental health, though that study also could not rule out underlying illness severity.

    “Maternal depression during pregnancy was associated with an increased chance of children having special educational needs,” McIlvride said. “Taking antidepressants during pregnancy was linked to a small increase in this risk, compared to untreated depression, but we weren’t able to show if this increase is due to these women having more severe depression or an effect of the medication. Untreated depression can have a serious impact on the well-being of both mother and baby so it is vital to keep taking antidepressants if they are needed.”

    Independent specialists reviewing the research for the Science Media Centre emphasized that the modest differences in risk should be interpreted with caution. Asma Khalil, a professor of obstetrics and maternal-fetal medicine at City St George’s, University of London, who was not involved in the study, said in her comments that the work provides helpful context but cannot determine causation.

    Khalil pointed to the gap of roughly three cases per 100 children between mothers with treated and untreated depression. “That difference is worth studying, but it does not show that antidepressants caused it,” Khalil said. “The researchers could not measure how severe the mothers’ depression was, and women prescribed medication may have differed in important ways from those who were not. A prescription also does not establish that a medicine was taken throughout pregnancy.”

    “The main outcome was a broad measure of special educational needs, which is not the same as a clinical diagnosis,” Khalil added. “This study adds valuable evidence about the needs of children and families, but it cannot tell an individual woman whether taking or stopping an antidepressant would change her child’s developmental risk.”

    McIlvride similarly emphasized that population-level statistics do not translate directly into an individual pregnancy’s personal outcome.

    “This study has estimated an association at a population level and so can’t tell an individual about their personal risk,” McIlvride noted. “It gives women and their families information which could potentially benefit their child’s development by identifying a need for support earlier. This study also shows that antidepressant use during pregnancy is increasingly common around 1 in 12 women were taking antidepressants in our study, and we can expect this figure to be even higher today therefore this is an area which deserves more research.”

    As with all research, there are some caveats to consider. The biggest limitation is that the researchers had no data on how severe each mother’s depression was. Because doctors typically prescribe medications like tricyclic antidepressants for more severe or treatment-resistant depression, the higher risks seen with these specific drugs might simply reflect the fact that the mothers prescribed them were experiencing a more intense form of the illness.

    “This study does not show that depression or antidepressant use during pregnancy causes autism or ADHD in children it shows an association, which could be due to many different reasons,” McIlvride emphasized. “The increased risk associated with antidepressants we observed in our study could be due to more severe disease, as it is likely that women who are taking antidepressants will have more severe depression.”

    Angelica Ronald, a professor of psychology and genetics at the University of Surrey who was not involved in the study, said in comments to the Science Media Centre that shared genetic influences could account for part of the link, while describing the large sample size and linked records as notable strengths of the study.

    “There is evidence from a range of sources that depression and neurodevelopmental conditions such as autism and ADHD share some genetic influences,” Ronald said. “This means we expect autism, ADHD and depression to run in the same families to some degree. This new study does not account for the fact that autism, ADHD and depression share some inherited (genetic) influences. Shared genetic influences might explain some of the associations found here between maternal depression in pregnancy and maternal use of antidepressants in pregnancy and offspring special educational needs.”

    David Curtis, an honorary professor at the UCL Genetics Institute at University College London who was not involved in the research, questioned in his comments to the Science Media Centre whether the depression link reflects any harm in the womb at all.

    “Although this study shows that children of mothers who suffered depression or took antidepressants have increased rates of special educational needs, we cannot assume that this represents a causal relationship,” Curtis said. “In fact, for me it seems somewhat implausible that a mother being depressed in the two years before birth would somehow cause the child to be at subsequently increased risk of having learning difficulties. Typically, a depressive illness per se does not produce profound physiological changes such as might be expected to substantially disrupt fetal development. Alternative explanations seem more likely.”

    “A mother depressed in the years before delivery would be more likely to have subsequent episodes of depression and these subsequent episodes might impact a child’s psychosocial development,” he explained. “A mother with a previous diagnosis of depression might have more contact with support services which could result in a higher probability of problems with the child being detected.”

    The researchers also lacked some data. The group of women prescribed antidepressants without a recorded depression diagnosis likely included many with unrecorded depression or anxiety, as well as some treated for other conditions, such as migraine and chronic pain, for which tricyclic antidepressants and serotonin and norepinephrine reuptake inhibitors are also prescribed. The researchers did not have data on maternal alcohol or illicit drug use, nor could they account for the mental health of fathers or the potential influence of breastfeeding.

    McIlvride pointed to several next steps for expanding on this line of inquiry. “The average age of children in our study was just under 6 years old, so it would be of interest to follow the children up for a longer period,” she said. “Further research is needed to answer questions around the dose of medications or how taking medication while breastfeeding could affect children’s development.”

    Future studies that include detailed measures of depression severity, environmental factors, and longer follow-up windows could help better explain the relationship between maternal mental health care and long-term child development.

    The study, “Prenatal exposure to maternal depression and antidepressants and neurodevelopmental outcomes: A population cohort study,” was authored by Saraid McIlvride, Neha Rao, Sarjit Singh, Scott M. Nelson, Jill P. Pell, and Michael Fleming.

    URL: psypost.org/antidepressants-in

    -------------------------------------------------

    Private, vetted email list for mental health professionals: clinicians-exchange.org

    Unofficial Psychology Today Xitter to toot feed at Psych Today Unofficial Bot @PTUnofficialBot

    -------------------------------------------------

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #PrenatalDepression #AntidepressantsInPregnancy #Neurodevelopment #AutismRisk #ADHD #SpecialEducationalNeeds #MaternalMentalHealth #PregnancyHealth #ChildDevelopment #PLOSMedicine

  9. Data centre firms say the AI bottleneck is now power and labour thenextweb.com/news/ai-data-ce

  10. Data center GPUs are designed for massive forced air cooling in server racks.

    My little homelab doesn't need to sound like a jet turbine while idle, so I assembled this. It's a high-amp fan controller with both user adjustable and temperature sensor control. I'll stick the temp probe into the primary GPU's heatsink. So it'll have responsive cooling just like a consumer GPU.

    The modern maker would probably deploy a Pi zero for this. Old-skool is best sometimes. And cheap.

    #AI #homelab #homeassistant #llm #hermesagent #selfhosted #selfhosting

  11. 💾 "Texas is making #data #centers #wait because apparently, everything *is* bigger in #Texas, including the wait #times. Meanwhile, #Andreessen #Horowitz is busy playing a game of #buzzword #bingo with AI, crypto, and other #tech clichés. 🤖💰"
    a16z.com/why-texas-is-making-d #Trends #HackerNews #ngated

  12. Algebraic data types and pattern matching were well received.

    Documentation is the first thing people ask for once they have seen real code, and many did not know that Core Solidity runs on the existing solc backend.

  13. Need data for a web dev topic?

    The “metrics” tag on Frontend Dogma is there to indicate data:

    frontenddogma.com/topics/metri

    You can combine it with the topics under scrutiny:

    * Accessibility data: frontenddogma.com/topics/filte
    * HTML-related data: frontenddogma.com/topics/filte
    * Productivity data: frontenddogma.com/topics/filte

    And so on. Follow and support the work!

  14. Customer data breach suspected at sushi delivery operator

    Sushi and other food delivery service operator Ride On Express Holdings said Tuesday that the personal information of up to about 6.5 million registered customers may have been compromised through unauthorized server access. According to the company, the affected da…
    #Japan #JP #JapanNews #AI. #computers #cybersecurity #hacking #news #sushi? #tech
    alojapan.com/1553272/customer-

  15. New Data from the Juno Spacecraft Reveals that Jupiter’s Has a Rippling, Wavy Magnetodisk

    Jupiter is the largest planet in the Solar System and has a planetary magnetosphere to match! Since 2016,…
    #NewsBeep #News #Space #Science #UK #UnitedKingdom
    newsbeep.com/uk/801825/

  16. Ihr möchtet in Eurer Organisation Eure Daten besser nutzen und holt dafür ehrenamtliche Data Scientists mit an Bord?

    Das haben die Stiftung Ein Quadratkilometer Bildung und CorrelAid im Rahmen des CorrelLABs ausprobiert.
    Die Ausgangslage kommt Euch womöglich bekannt vor: Eure Daten sind in verschiedenen Tabellen und Ablagen verteilt. Um aussagekräftige Erkenntnisse zu gewinnen, ist viel Zeit nötig.
    In unserem Beispiel wurde deshalb gemeinsam eine Lösung erarbeitet. Diese erleichtert den Arbeitsalltag.

    ☕ In unserem nächsten Espresso Doppio geben Euch die Beteiligten Einblicke in ihre Zusammenarbeit, sprechen über Herausforderungen und teilen ihre Erfahrungen aus der Praxis.

    Datenarbeit beginnt nämlich nicht einfach mit einem neuen Tool, sondern mit der Frage:
    Was braucht eine Organisation wirklich?

    📅 22. Oktober 2026 | 12:00–12:45 Uhr | Online
    🔗 👉 Link: community.civic-data.de/conten

    #CivicTech #Zivilgesellschaft #Gemeinwohl

  17. A data centre consuming water, electricity and public infrastructure is not an abstract "AI problem". The terms under which it operates are decisions made by companies, regulators and elected representatives.

    This article proposes conditions communities could demand on water, power, emissions, transparency, local costs and decommissioning.

    Then ask candidates where they stand.

    alanbonnici.com/2026/10/stop-b

    #TTMO #ArtificialIntelligence #DataCentres #Environment #Democracy

  18. Encrypt data at rest and in transit always. Use Azure-native encryption to protect sensitive data from interception or theft. Ensure compliance and security best practices .

  19. AI data centers are coming for federal land. They are roiling the Nevada governor's race (Jessica Hill/Associated Press)

    apnews.com/article/nevada-data
    memeorandum.com/261013/p29#a26

  20. 🏺 Trowels to Terabytes! Nicky Garland from the ADS is speaking at UEA's @[email protected] on the re-use of heritage data at the ADS.

    🗓 Tuesday 20 Oct, 2-3pm
    💻 Online and free to all - buff.ly/BgQjVq6
    ℹ️ Find out more here - buff.ly/9q2QXkD

    #archaeology #digtialpreservation

  21. I data center USA potrebbero crescere da 5 a 50 GW entro il 2030, ma la rete elettrica non reggerà. La scarsità di trasformatori (oltre 5 anni di attesa) e l’opposizione politica minacciano il progresso. Senza investimenti infrastrutturali immediati, l’espansione dell’IA rallenterà per vincoli fisici ed energetici. #EnergyCrisis #DataCenters #Infrastructure @tecnologia
    transformernews.ai/p/ai-will-r

Share on Mastodon

Enter the server where you have an account.